Kubernetes Submit Queue
3456d4d239
Merge pull request #46033 from wojtek-t/reduce_memory_allocations_in_kube_proxy
Automatic merge from submit-queue
Reduce memory allocations in kube proxy
Memory allocation (and Go GarbageCollection) seems to be one of the most expensive operations in kube-proxy (I've seen profiles where it was more than 50%).
The commits are mostly independent from each other and all of them are mostly about reusing already allocated memory.
This PR is reducing memory allocation by ~5x (results below from 100-node load test):
before:
```
(pprof) top
38.64GB of 39.11GB total (98.79%)
Dropped 249 nodes (cum <= 0.20GB)
Showing top 10 nodes out of 61 (cum >= 0.20GB)
flat flat% sum% cum cum%
15.10GB 38.62% 38.62% 15.10GB 38.62% bytes.makeSlice
9.48GB 24.25% 62.87% 9.48GB 24.25% runtime.rawstringtmp
8.30GB 21.21% 84.07% 32.47GB 83.02% k8s.io/kubernetes/pkg/proxy/iptables.(*Proxier).syncProxyRules
2.08GB 5.31% 89.38% 2.08GB 5.31% fmt.(*fmt).padString
1.90GB 4.86% 94.24% 3.82GB 9.77% strings.Join
0.67GB 1.72% 95.96% 0.67GB 1.72% runtime.hashGrow
0.36GB 0.92% 96.88% 0.36GB 0.92% runtime.stringtoslicebyte
0.31GB 0.79% 97.67% 0.62GB 1.58% encoding/base32.(*Encoding).EncodeToString
0.24GB 0.62% 98.29% 0.24GB 0.62% strings.genSplit
0.20GB 0.5% 98.79% 0.20GB 0.5% runtime.convT2E
```
after:
```
7.94GB of 8.13GB total (97.75%)
Dropped 311 nodes (cum <= 0.04GB)
Showing top 10 nodes out of 65 (cum >= 0.11GB)
flat flat% sum% cum cum%
3.32GB 40.87% 40.87% 8.05GB 99.05% k8s.io/kubernetes/pkg/proxy/iptables.(*Proxier).syncProxyRules
2.85GB 35.09% 75.95% 2.85GB 35.09% runtime.rawstringtmp
0.60GB 7.41% 83.37% 0.60GB 7.41% runtime.hashGrow
0.31GB 3.76% 87.13% 0.31GB 3.76% runtime.stringtoslicebyte
0.28GB 3.43% 90.56% 0.55GB 6.80% encoding/base32.(*Encoding).EncodeToString
0.19GB 2.29% 92.85% 0.19GB 2.29% strings.genSplit
0.18GB 2.17% 95.03% 0.18GB 2.17% runtime.convT2E
0.10GB 1.28% 96.31% 0.71GB 8.71% runtime.mapassign
0.10GB 1.21% 97.51% 0.10GB 1.21% syscall.ByteSliceFromString
0.02GB 0.23% 97.75% 0.11GB 1.38% syscall.SlicePtrFromStrings
```
2017-05-19 23:21:49 -07:00
..
2017-05-15 12:52:01 +08:00
2017-04-27 10:05:22 -04:00
2017-05-12 13:53:37 -07:00
2017-04-14 10:40:57 -07:00
2017-05-19 12:31:27 +08:00
2017-05-16 12:17:58 -04:00
2017-05-15 13:25:52 -07:00
2017-04-17 19:59:16 -07:00
2017-05-16 10:39:05 -07:00
2017-04-30 19:15:01 +02:00
2017-04-14 10:40:57 -07:00
2017-05-17 12:58:41 -07:00
2017-05-05 11:48:08 -07:00
2017-05-10 01:40:58 +00:00
2017-05-19 11:47:45 -07:00
2017-01-05 14:14:13 -08:00
2017-04-14 10:40:57 -07:00
2017-04-14 10:40:57 -07:00
2017-05-19 20:44:25 +02:00
2017-04-14 10:40:57 -07:00
2017-05-11 19:14:16 +08:00
2017-04-17 11:38:11 -07:00
2017-05-19 20:44:25 +02:00
2017-04-27 19:06:10 -04:00
2017-05-12 10:02:33 -07:00
2017-05-15 16:28:56 +03:00
2017-05-12 10:02:33 -07:00
2017-04-14 10:40:57 -07:00
2017-05-15 17:00:14 +03:00
2017-05-04 10:18:24 -07:00
2017-05-11 10:01:41 -07:00
2017-05-16 14:25:30 -07:00
2017-04-14 10:40:57 -07:00
2017-05-17 18:40:51 -07:00
2017-01-31 19:14:13 -05:00
2017-01-31 19:14:13 -05:00
2017-05-15 16:28:56 +03:00
2017-03-16 10:21:44 -07:00
2017-01-11 09:09:48 -05:00
2017-03-16 10:21:44 -07:00
2017-01-24 18:40:49 +00:00
2017-03-16 10:21:44 -07:00
2017-01-17 13:18:26 +00:00
2017-05-10 13:03:41 -07:00
2017-05-11 22:31:14 -04:00
2017-04-29 11:31:24 -07:00
2017-01-24 18:40:49 +00:00
2017-05-15 16:28:56 +03:00
2017-02-27 21:24:44 -08:00
2017-04-17 11:38:11 -07:00
2017-05-16 18:46:29 +08:00
2017-05-05 14:07:38 +02:00
2017-04-25 21:16:22 -04:00
2017-05-15 14:01:30 +08:00
2017-05-03 16:32:01 -07:00
2017-03-16 10:21:44 -07:00
2017-01-31 19:15:33 -05:00
2017-01-19 11:04:57 -08:00
2017-01-11 09:09:48 -05:00
2017-01-31 19:14:13 -05:00
2017-02-27 10:59:24 -08:00
2017-01-11 09:09:48 -05:00
2017-01-11 09:09:48 -05:00
2017-05-10 16:25:09 -07:00
2016-11-23 15:53:09 -08:00
2017-01-10 16:34:00 -08:00
2016-11-23 15:53:09 -08:00
2017-01-23 16:10:01 +01:00