Commit 503524c
committed
part: Optimize map space usage with one element
In cilium/cilium we're using part.Map in the Backend object to hold the
instances of the backend and most of the time it only contains one element.
Specialize for this case by adding a singleton field to part.Map.
Before (map with 1 element):
=== RUN TestMapMemoryUse
map_test.go:272: 320 bytes per map
After:
=== RUN TestMapMemoryUse
map_test.go:348: 40 bytes per map
pkg/loadbalancer/benchmark before:
Memory statistics from N=10 iterations:
Min: Allocated 716852kB in total, 2068061 objects / 125960kB still reachable (per service: 41 objs, 14681B alloc, 2579B in-use)
Avg: Allocated 731848kB in total, 2607405 objects / 180868kB still reachable (per service: 52 objs, 14988B alloc, 3704B in-use)
Max: Allocated 775441kB in total, 3649005 objects / 317829kB still reachable (per service: 72 objs, 15881B alloc, 6509B in-use)
Insert statistics from N=10 iterations:
Min: Reconciled 50000 objects in 832.079251ms (16.641µs per service / 60093 services per second)
Avg: Reconciled 50000 objects in 883.983229ms (17.679µs per service / 56564 services per second)
Max: Reconciled 50000 objects in 988.247623ms (19.764µs per service / 50597 services per second)
After:
Memory statistics from N=10 iterations:
Min: Allocated 669824kB in total, 2067737 objects / 124777kB still reachable (per service: 41 objs, 13718B alloc, 2555B in-use)
Avg: Allocated 688314kB in total, 2445133 objects / 166797kB still reachable (per service: 48 objs, 14096B alloc, 3416B in-use)
Max: Allocated 734497kB in total, 3444117 objects / 301701kB still reachable (per service: 68 objs, 15042B alloc, 6178B in-use)
Insert statistics from N=10 iterations:
Min: Reconciled 50000 objects in 798.811656ms (15.976µs per service / 62594 services per second)
Avg: Reconciled 50000 objects in 831.351251ms (16.627µs per service / 60143 services per second)
Max: Reconciled 50000 objects in 929.973547ms (18.599µs per service / 53766 services per second)
Signed-off-by: Jussi Maki <[email protected]>1 parent d56c21d commit 503524c
3 files changed
+249
-25
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
23 | | - | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| |||
32 | 33 | | |
33 | 34 | | |
34 | 35 | | |
35 | | - | |
36 | | - | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
37 | 43 | | |
38 | 44 | | |
39 | 45 | | |
40 | 46 | | |
41 | | - | |
42 | | - | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
43 | 53 | | |
44 | 54 | | |
45 | 55 | | |
| |||
52 | 62 | | |
53 | 63 | | |
54 | 64 | | |
55 | | - | |
56 | 65 | | |
57 | 66 | | |
58 | 67 | | |
59 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
60 | 73 | | |
61 | 74 | | |
62 | 75 | | |
63 | | - | |
| 76 | + | |
64 | 77 | | |
65 | 78 | | |
66 | 79 | | |
67 | 80 | | |
68 | 81 | | |
69 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
70 | 89 | | |
71 | 90 | | |
72 | | - | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
73 | 96 | | |
74 | 97 | | |
75 | 98 | | |
76 | 99 | | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
77 | 107 | | |
78 | 108 | | |
79 | 109 | | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
80 | 116 | | |
81 | 117 | | |
82 | | - | |
| 118 | + | |
83 | 119 | | |
84 | 120 | | |
85 | 121 | | |
| |||
107 | 143 | | |
108 | 144 | | |
109 | 145 | | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
110 | 151 | | |
111 | 152 | | |
112 | 153 | | |
113 | | - | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
114 | 163 | | |
115 | 164 | | |
116 | 165 | | |
117 | 166 | | |
118 | 167 | | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
119 | 173 | | |
120 | 174 | | |
121 | 175 | | |
122 | | - | |
| 176 | + | |
123 | 177 | | |
124 | 178 | | |
125 | 179 | | |
126 | 180 | | |
127 | 181 | | |
128 | 182 | | |
129 | 183 | | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
130 | 187 | | |
131 | 188 | | |
132 | 189 | | |
| |||
136 | 193 | | |
137 | 194 | | |
138 | 195 | | |
139 | | - | |
140 | | - | |
141 | 196 | | |
142 | 197 | | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
143 | 202 | | |
144 | 203 | | |
145 | 204 | | |
| |||
163 | 222 | | |
164 | 223 | | |
165 | 224 | | |
166 | | - | |
167 | | - | |
168 | 225 | | |
169 | 226 | | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
170 | 232 | | |
171 | 233 | | |
172 | 234 | | |
| |||
187 | 249 | | |
188 | 250 | | |
189 | 251 | | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
190 | 255 | | |
191 | 256 | | |
192 | 257 | | |
| |||
218 | 283 | | |
219 | 284 | | |
220 | 285 | | |
| 286 | + | |
| 287 | + | |
221 | 288 | | |
222 | 289 | | |
223 | 290 | | |
| |||
234 | 301 | | |
235 | 302 | | |
236 | 303 | | |
237 | | - | |
| 304 | + | |
238 | 305 | | |
239 | 306 | | |
240 | 307 | | |
| |||
245 | 312 | | |
246 | 313 | | |
247 | 314 | | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
248 | 321 | | |
249 | 322 | | |
250 | 323 | | |
251 | 324 | | |
252 | 325 | | |
253 | | - | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
| 326 | + | |
| 327 | + | |
258 | 328 | | |
259 | 329 | | |
260 | 330 | | |
261 | 331 | | |
262 | 332 | | |
| 333 | + | |
| 334 | + | |
263 | 335 | | |
264 | 336 | | |
265 | 337 | | |
| |||
273 | 345 | | |
274 | 346 | | |
275 | 347 | | |
276 | | - | |
| 348 | + | |
277 | 349 | | |
278 | 350 | | |
279 | 351 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| |||
55 | 56 | | |
56 | 57 | | |
57 | 58 | | |
| 59 | + | |
58 | 60 | | |
59 | 61 | | |
60 | 62 | | |
61 | 63 | | |
| 64 | + | |
62 | 65 | | |
63 | | - | |
| 66 | + | |
64 | 67 | | |
65 | 68 | | |
66 | 69 | | |
| |||
78 | 81 | | |
79 | 82 | | |
80 | 83 | | |
| 84 | + | |
81 | 85 | | |
82 | 86 | | |
83 | 87 | | |
| |||
117 | 121 | | |
118 | 122 | | |
119 | 123 | | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
120 | 218 | | |
121 | 219 | | |
122 | 220 | | |
| |||
274 | 372 | | |
275 | 373 | | |
276 | 374 | | |
277 | | - | |
| 375 | + | |
278 | 376 | | |
279 | 377 | | |
280 | 378 | | |
| |||
0 commit comments