Clayton Coleman 
							
						 
					 
					
						
						
							
						
						3454a8d52c 
					 
					
						
						
							
							refactor: update bazel, codec, and gofmt  
						
						
						
						
					 
					
						2016-12-03 19:10:53 -05:00 
						 
				 
			
				
					
						
							
							
								Clayton Coleman 
							
						 
					 
					
						
						
							
						
						5df8cc39c9 
					 
					
						
						
							
							refactor: generated  
						
						
						
						
					 
					
						2016-12-03 19:10:46 -05:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						ec247315be 
					 
					
						
						
							
							Handle RV in Get calls to storage interface.  
						
						
						
						
					 
					
						2016-12-03 10:18:43 +01:00 
						 
				 
			
				
					
						
							
							
								Kubernetes Submit Queue 
							
						 
					 
					
						
						
							
						
						cd560926bd 
					 
					
						
						
							
							Merge pull request  #36889  from wojtek-t/reuse_fields_and_labels  
						
						... 
						
						
						
						Automatic merge from submit-queue
Reuse fields and labels
This should significantly reduce memory allocations in apiserver in large cluster.
Explanation:
- every kubelet is refreshing watch every 5-10 minutes (this generally is not causing relist - it just renews watch)
- that means, in 5000-node cluster, we are issuing ~10 watches per second
- since we don't have "watch heartbets", the watch is issued from previously received resourceVersion
- to make some assumption, let's assume pods are evenly spread across pods, and writes for them are evenly spread - that means, that a given kubelet is interested in 1 per 5000 pod changes
- with that assumption, each watch, has to process 2500 (on average) previous watch events
- for each of such even, we are currently computing fields.
This PR is fixing this problem. 
						
						
					 
					
						2016-12-02 21:49:43 -08:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						36e6cd19e1 
					 
					
						
						
							
							Cache fields for filtering in watchCache.  
						
						
						
						
					 
					
						2016-11-29 09:48:09 +01:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						ac7b1065e7 
					 
					
						
						
							
							Better waiting for watch event delivery in cacher  
						
						
						
						
					 
					
						2016-11-28 09:25:33 +01:00 
						 
				 
			
				
					
						
							
							
								Chao Xu 
							
						 
					 
					
						
						
							
						
						4f3d0e3bde 
					 
					
						
						
							
							more dependencies packages:  
						
						... 
						
						
						
						pkg/metrics
pkg/credentialprovider
pkg/security
pkg/securitycontext
pkg/serviceaccount
pkg/storage
pkg/fieldpath 
						
						
					 
					
						2016-11-23 15:53:09 -08:00 
						 
				 
			
				
					
						
							
							
								Kubernetes Submit Queue 
							
						 
					 
					
						
						
							
						
						6f80ec91d6 
					 
					
						
						
							
							Merge pull request  #35415  from wojtek-t/avoid_get  
						
						... 
						
						
						
						Automatic merge from submit-queue
Try to avoid Get to etcd in GuaranteedUpdate in Cacher 
						
						
					 
					
						2016-10-26 16:15:06 -07:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						5d2062db9f 
					 
					
						
						
							
							Reduce amount of not-helping logs in apiserver  
						
						
						
						
					 
					
						2016-10-26 13:20:07 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						a1090151ef 
					 
					
						
						
							
							Try to avoid Get to etcd in GuaranteedUpdate in Cacher  
						
						
						
						
					 
					
						2016-10-25 21:59:02 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						93c008f8a4 
					 
					
						
						
							
							Support resourceVersion in GetToList - unify interface of List and GetToList  
						
						
						
						
					 
					
						2016-10-21 10:09:23 +02:00 
						 
				 
			
				
					
						
							
							
								Kubernetes Submit Queue 
							
						 
					 
					
						
						
							
						
						5fcb9fd056 
					 
					
						
						
							
							Merge pull request  #35125  from wojtek-t/avoid_unnecessary_reallocations  
						
						... 
						
						
						
						Automatic merge from submit-queue
Avoid unnecessary reallocations of slice in Cacher 
						
						
					 
					
						2016-10-19 20:33:13 -07:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						0ced3f43bf 
					 
					
						
						
							
							Avoid unnecessary reallocations of slice in Cacher  
						
						
						
						
					 
					
						2016-10-19 19:33:33 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						8040719d7f 
					 
					
						
						
							
							Avoid computing key func multiple times in cacher  
						
						
						
						
					 
					
						2016-10-19 08:38:18 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						f10b0205e7 
					 
					
						
						
							
							Store keys in watchCache store  
						
						
						
						
					 
					
						2016-10-19 08:38:18 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						9895f337ee 
					 
					
						
						
							
							Avoid unnecessary copies in cacher  
						
						
						
						
					 
					
						2016-10-19 08:33:58 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						0f2270698c 
					 
					
						
						
							
							Reduce amount of annoying logs in cacher  
						
						
						
						
					 
					
						2016-10-17 16:15:24 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						4d5ac91f88 
					 
					
						
						
							
							Add tracing to listing in Cacher  
						
						
						
						
					 
					
						2016-10-17 08:58:40 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						2298e1746c 
					 
					
						
						
							
							Increase buffer sizes in cacher for watchers interested in all/many objects.  
						
						
						
						
					 
					
						2016-10-13 16:40:33 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						c02df26ad6 
					 
					
						
						
							
							Improve some logging in cacher  
						
						
						
						
					 
					
						2016-10-07 15:04:08 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						90bc19959d 
					 
					
						
						
							
							Extend logging in cacher to understand its bottleneck  
						
						
						
						
					 
					
						2016-10-06 10:57:46 +02:00 
						 
				 
			
				
					
						
							
							
								Hongchao Deng 
							
						 
					 
					
						
						
							
						
						6f3ac807fd 
					 
					
						
						
							
							pass SelectionPredicate instead of Filter to storage layer  
						
						
						
						
					 
					
						2016-09-26 09:47:19 -07:00 
						 
				 
			
				
					
						
							
							
								Lucas Käldström 
							
						 
					 
					
						
						
							
						
						06917531b3 
					 
					
						
						
							
							Move HighWaterMark to the top of the struct in order to fix arm, second time  
						
						
						
						
					 
					
						2016-09-23 20:58:28 +03:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						e5b3f19638 
					 
					
						
						
							
							Fix logging in cacher  
						
						
						
						
					 
					
						2016-09-14 09:13:41 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						949dd90593 
					 
					
						
						
							
							Extend logging for performance debuggin  
						
						
						
						
					 
					
						2016-09-12 12:46:19 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						03a23aed09 
					 
					
						
						
							
							Log water mark for incoming queue in cacher  
						
						
						
						
					 
					
						2016-09-09 11:35:05 +02:00 
						 
				 
			
				
					
						
							
							
								Kubernetes Submit Queue 
							
						 
					 
					
						
						
							
						
						504ccc6f37 
					 
					
						
						
							
							Merge pull request  #32275  from wojtek-t/split_process_event  
						
						... 
						
						
						
						Automatic merge from submit-queue
Split dispatching to watchers in Cacher into separate goroutine.
Should help with #32257  
						
						
					 
					
						2016-09-08 07:42:12 -07:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						e750454c31 
					 
					
						
						
							
							Fix allow for non-ready nodes in e2e framework  
						
						
						
						
					 
					
						2016-09-08 14:22:08 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						378cd81dbe 
					 
					
						
						
							
							Split dispatching to watchers in Cacher into separate goroutine.  
						
						
						
						
					 
					
						2016-09-08 13:27:54 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						bd54c389f5 
					 
					
						
						
							
							Extend logging for scalability tests debugging  
						
						
						
						
					 
					
						2016-09-08 12:02:59 +02:00 
						 
				 
			
				
					
						
							
							
								Hongchao Deng 
							
						 
					 
					
						
						
							
						
						a607a69f4a 
					 
					
						
						
							
							pkg/storage: cleanup Codec() from interface  
						
						
						
						
					 
					
						2016-08-15 20:46:13 -07:00 
						 
				 
			
				
					
						
							
							
								Kubernetes Submit Queue 
							
						 
					 
					
						
						
							
						
						a69054f9c3 
					 
					
						
						
							
							Merge pull request  #30368  from wojtek-t/log_terminating_all_watchers  
						
						... 
						
						
						
						Automatic merge from submit-queue
Log warning when terminating all watchers
Ref #30275 
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.kubernetes.io/review_button.svg " height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.kubernetes.io/reviews/kubernetes/kubernetes/30368 )
<!-- Reviewable:end --> 
						
						
					 
					
						2016-08-10 09:26:07 -07:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						497f891cfb 
					 
					
						
						
							
							Log warning when terminating all watchers  
						
						
						
						
					 
					
						2016-08-10 17:04:10 +02:00 
						 
				 
			
				
					
						
							
							
								Hongchao Deng 
							
						 
					 
					
						
						
							
						
						7f28eda9be 
					 
					
						
						
							
							storage interface: remove Backends()  
						
						
						
						
					 
					
						2016-08-07 16:10:18 -07:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						33e612e101 
					 
					
						
						
							
							Revert "cacher.go: embed storage.Interface into cacher"  
						
						
						
						
					 
					
						2016-07-22 07:28:45 +02:00 
						 
				 
			
				
					
						
							
							
								Xiang Li 
							
						 
					 
					
						
						
							
						
						44c0a1190c 
					 
					
						
						
							
							cacher.go: embed storage.Interface into cacher  
						
						
						
						
					 
					
						2016-07-16 23:25:48 -07:00 
						 
				 
			
				
					
						
							
							
								Jordan Liggitt 
							
						 
					 
					
						
						
							
						
						4fcd999c25 
					 
					
						
						
							
							Fix watch cache filtering  
						
						
						
						
					 
					
						2016-07-14 13:13:17 -04:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						1d9bc58328 
					 
					
						
						
							
							Extend Filter interface with Trigger() and use it for pods and nodes  
						
						
						
						
					 
					
						2016-07-13 08:45:18 +02:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						7f7ef0879f 
					 
					
						
						
							
							Change filter to interface in storage.Interface  
						
						
						
						
					 
					
						2016-07-13 08:44:22 +02:00 
						 
				 
			
				
					
						
							
							
								Xiang Li 
							
						 
					 
					
						
						
							
						
						aa472ff734 
					 
					
						
						
							
							cacher: replace usable lock with conditional variable  
						
						
						
						
					 
					
						2016-07-04 08:57:59 -07:00 
						 
				 
			
				
					
						
							
							
								David McMahon 
							
						 
					 
					
						
						
							
						
						ef0c9f0c5b 
					 
					
						
						
							
							Remove "All rights reserved" from all the headers.  
						
						
						
						
					 
					
						2016-06-29 17:47:36 -07:00 
						 
				 
			
				
					
						
							
							
								k8s-merge-robot 
							
						 
					 
					
						
						
							
						
						00b5b548d6 
					 
					
						
						
							
							Merge pull request  #26854  from xiang90/cacher  
						
						... 
						
						
						
						Automatic merge from submit-queue
cacher.go: remove NewCacher func
NewCacher is a wrapper of NewCacherFromConfig. NewCacher understands
how to create a key func from scopeStrategy. However, it is not the
responsibility of cacher. So we should remove this function, and
construct the config in its caller, which should understand scopeStrategy. 
						
						
					 
					
						2016-06-25 11:10:06 -07:00 
						 
				 
			
				
					
						
							
							
								Xiang Li 
							
						 
					 
					
						
						
							
						
						c530a5810a 
					 
					
						
						
							
							cacher: remove unnecessary initialzation  
						
						
						
						
					 
					
						2016-06-04 22:49:45 -07:00 
						 
				 
			
				
					
						
							
							
								Xiang Li 
							
						 
					 
					
						
						
							
						
						e2aab093aa 
					 
					
						
						
							
							cacher.go: remove NewCacher func  
						
						... 
						
						
						
						NewCacher is a wrapper of NewCacherFromConfig. NewCacher understands
how to create a key func from scopeStrategy. However, it is not the
responsibility of cacher. So we should remove this function, and
construct the config in its caller, which should understand scopeStrategy. 
						
						
					 
					
						2016-06-04 22:46:58 -07:00 
						 
				 
			
				
					
						
							
							
								Jordan Liggitt 
							
						 
					 
					
						
						
							
						
						f80b59ba87 
					 
					
						
						
							
							Return 'too old' errors from watch cache via watch stream  
						
						
						
						
					 
					
						2016-05-10 10:59:53 -04:00 
						 
				 
			
				
					
						
							
							
								Russ Cox 
							
						 
					 
					
						
						
							
						
						6a19e46ed6 
					 
					
						
						
							
							pkg/storage: cache timers  
						
						... 
						
						
						
						A previous change here replaced time.After with an explicit
timer that can be stopped, to avoid filling up the active timer list
with timers that are no longer needed. But an even better fix is to
reuse the timers across calls, to avoid filling the allocated heap
with work for the garbage collector. On top of that, try a quick
non-blocking send to avoid the timer entirely.
For the e2e 1000-node kubemark test, basically everything gets faster,
some things significantly so. The 90th and 99th percentile for LIST nodes
in particular are the worst case that has caused SLO/SLA problems
in the past, and this reduces 99th percentile by 10%.
name                               old ms/op  new ms/op   delta
LIST_nodes_p50                      127 ±16%    124 ±13%     ~     (p=0.136 n=29+29)
LIST_nodes_p90                      326 ±12%    278 ±15%  -14.85%  (p=0.000 n=29+29)
LIST_nodes_p99                      453 ±11%    405 ±19%  -10.70%  (p=0.000 n=29+28)
LIST_replicationcontrollers_p50    29.4 ±49%   26.6 ±43%     ~     (p=0.176 n=30+29)
LIST_replicationcontrollers_p90    83.0 ±78%   68.7 ±63%  -17.30%  (p=0.020 n=30+29)
LIST_replicationcontrollers_p99     216 ±43%    173 ±41%  -19.53%  (p=0.000 n=29+28)
DELETE_pods_p50                    24.5 ±14%   24.3 ±17%     ~     (p=0.562 n=30+28)
DELETE_pods_p90                    30.7 ± 1%   30.6 ± 0%   -0.44%  (p=0.000 n=29+28)
DELETE_pods_p99                    77.2 ±34%   56.3 ±27%  -26.99%  (p=0.000 n=30+28)
PUT_replicationcontrollers_p50     5.86 ±26%   5.83 ±36%     ~     (p=1.000 n=29+28)
PUT_replicationcontrollers_p90     15.8 ± 7%   15.9 ± 6%     ~     (p=0.936 n=29+28)
PUT_replicationcontrollers_p99     57.8 ±35%   56.7 ±41%     ~     (p=0.725 n=29+28)
PUT_nodes_p50                      14.9 ± 2%   14.9 ± 1%   -0.55%  (p=0.020 n=30+28)
PUT_nodes_p90                      16.5 ± 1%   16.4 ± 2%   -0.60%  (p=0.040 n=27+28)
PUT_nodes_p99                      57.9 ±47%   44.6 ±42%  -23.02%  (p=0.000 n=30+29)
POST_replicationcontrollers_p50    6.35 ±29%   6.33 ±23%     ~     (p=0.957 n=30+28)
POST_replicationcontrollers_p90    15.4 ± 5%   15.2 ± 6%   -1.14%  (p=0.034 n=29+28)
POST_replicationcontrollers_p99    52.2 ±71%   53.4 ±52%     ~     (p=0.720 n=29+27)
POST_pods_p50                      8.99 ±13%   9.33 ±13%   +3.79%  (p=0.023 n=30+29)
POST_pods_p90                      16.2 ± 4%   16.3 ± 4%     ~     (p=0.113 n=29+29)
POST_pods_p99                      30.9 ±21%   28.4 ±23%   -8.26%  (p=0.001 n=28+29)
POST_bindings_p50                  9.34 ±12%   8.98 ±17%     ~     (p=0.083 n=30+29)
POST_bindings_p90                  16.6 ± 1%   16.5 ± 2%   -0.76%  (p=0.000 n=28+26)
POST_bindings_p99                  23.5 ± 9%   21.4 ± 5%   -8.98%  (p=0.000 n=27+27)
PUT_pods_p50                       10.8 ±11%   10.3 ± 5%   -4.67%  (p=0.000 n=30+28)
PUT_pods_p90                       16.1 ± 1%   16.0 ± 1%   -0.55%  (p=0.003 n=29+29)
PUT_pods_p99                       23.4 ± 9%   21.6 ±14%   -8.03%  (p=0.000 n=28+28)
DELETE_replicationcontrollers_p50  2.42 ±16%   2.50 ±13%     ~     (p=0.072 n=29+29)
DELETE_replicationcontrollers_p90  11.5 ±12%   11.7 ±10%     ~     (p=0.190 n=30+28)
DELETE_replicationcontrollers_p99  19.5 ±21%   19.0 ±22%     ~     (p=0.298 n=29+28)
GET_nodes_p90                      1.20 ±16%   1.18 ±19%     ~     (p=0.626 n=28+29)
GET_nodes_p99                      11.4 ±48%    8.3 ±40%  -27.31%  (p=0.000 n=28+28)
GET_replicationcontrollers_p90     1.04 ±25%   1.03 ±21%     ~     (p=0.682 n=30+29)
GET_replicationcontrollers_p99     12.1 ±81%  10.0 ±123%     ~     (p=0.135 n=28+28)
GET_pods_p90                       1.06 ±19%   1.08 ±21%     ~     (p=0.597 n=29+29)
GET_pods_p99                       3.92 ±43%   2.81 ±39%  -28.39%  (p=0.000 n=27+28)
LIST_pods_p50                      68.0 ±16%   65.3 ±13%     ~     (p=0.066 n=29+29)
LIST_pods_p90                       119 ±19%    115 ±12%     ~     (p=0.091 n=28+27)
LIST_pods_p99                       230 ±18%    226 ±21%     ~     (p=0.251 n=27+28) 
						
						
					 
					
						2016-04-21 15:53:47 -04:00 
						 
				 
			
				
					
						
							
							
								Andy Goldstein 
							
						 
					 
					
						
						
							
						
						049e63d253 
					 
					
						
						
							
							Honor starting resourceVersion in watch cache  
						
						... 
						
						
						
						Compare the requested resourceVersion to each event's resourceVersion to ensure events that occurred
in the past are not sent to the client. 
						
						
					 
					
						2016-04-14 09:37:22 -04:00 
						 
				 
			
				
					
						
							
							
								Daniel Smith 
							
						 
					 
					
						
						
							
						
						4c539bf082 
					 
					
						
						
							
							Merge pull request  #23490  from wojtek-t/remove_set_from_storage_interface  
						
						... 
						
						
						
						Remove Set() from storage.Interface. 
						
						
					 
					
						2016-04-13 14:22:05 -07:00 
						 
				 
			
				
					
						
							
							
								Jordan Liggitt 
							
						 
					 
					
						
						
							
						
						ada60236f7 
					 
					
						
						
							
							Make watch cache behave like uncached watch  
						
						
						
						
					 
					
						2016-04-12 10:14:07 -04:00 
						 
				 
			
				
					
						
							
							
								Wojciech Tyczynski 
							
						 
					 
					
						
						
							
						
						53f433f019 
					 
					
						
						
							
							Remove Set() from storage.Interface.  
						
						
						
						
					 
					
						2016-04-04 17:54:18 +02:00