Commit 4f9bfd8
committed
bpf/analyze: replace BlockIterator.Previous() with Backtracker
This commit removes the concept of 'global backtracking' (backtracking through
chains of blocks with single predecessors) and refactors BlockIterator.Previous()
into its own object. This removes the hazard of accidentally backtracking using
the main iterator.
Since no loop/depth tracking or block rollovers need to be done, this makes the
implementation significantly more straightforward.
This makes starting a backtracking session for reachability analysis on a
program with many branches a lot faster. Compared to main before this PR:
goos: linux
goarch: amd64
pkg: github.com/cilium/cilium/pkg/bpf/analyze
cpu: AMD Ryzen 7 3700X 8-Core Processor
│ old.txt │ new.txt │
│ sec/op │ sec/op vs base │
ComputeBlocks-16 654.6µ ± 1% 637.1µ ± 3% -2.67% (p=0.009 n=6)
Reachability-16 29.16µ ± 2% 16.30µ ± 2% -44.10% (p=0.002 n=6)
geomean 138.1µ 101.9µ -26.24%
│ old.txt │ new.txt │
│ B/op │ B/op vs base │
ComputeBlocks-16 372.5Ki ± 0% 372.5Ki ± 0% ~ (p=0.935 n=6)
Reachability-16 352.0 ± 0% 352.0 ± 0% ~ (p=1.000 n=6) ¹
geomean 11.32Ki 11.32Ki +0.00%
¹ all samples are equal
│ old.txt │ new.txt │
│ allocs/op │ allocs/op vs base │
ComputeBlocks-16 8.053k ± 0% 8.053k ± 0% ~ (p=1.000 n=6) ¹
Reachability-16 3.000 ± 0% 3.000 ± 0% ~ (p=1.000 n=6) ¹
geomean 155.4 155.4 +0.00%
¹ all samples are equal
Signed-off-by: Timo Beckers <timo@isovalent.com>1 parent 34e6ae5 commit 4f9bfd8
5 files changed
Lines changed: 83 additions & 283 deletions
File tree
- pkg/bpf
- analyze
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
219 | 219 | | |
220 | 220 | | |
221 | 221 | | |
222 | | - | |
223 | | - | |
| 222 | + | |
224 | 223 | | |
225 | | - | |
226 | | - | |
227 | | - | |
228 | | - | |
229 | | - | |
230 | | - | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
231 | 231 | | |
232 | | - | |
233 | 232 | | |
234 | 233 | | |
235 | 234 | | |
| |||
285 | 284 | | |
286 | 285 | | |
287 | 286 | | |
288 | | - | |
289 | | - | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | 287 | | |
295 | 288 | | |
296 | 289 | | |
| |||
308 | 301 | | |
309 | 302 | | |
310 | 303 | | |
311 | | - | |
312 | 304 | | |
313 | 305 | | |
314 | 306 | | |
| |||
332 | 324 | | |
333 | 325 | | |
334 | 326 | | |
335 | | - | |
336 | | - | |
337 | | - | |
338 | | - | |
339 | | - | |
340 | | - | |
341 | | - | |
342 | | - | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | 327 | | |
349 | 328 | | |
350 | 329 | | |
| |||
358 | 337 | | |
359 | 338 | | |
360 | 339 | | |
361 | | - | |
362 | | - | |
363 | | - | |
364 | | - | |
365 | | - | |
366 | | - | |
367 | 340 | | |
368 | | - | |
| 341 | + | |
369 | 342 | | |
370 | 343 | | |
371 | 344 | | |
372 | 345 | | |
373 | 346 | | |
374 | 347 | | |
375 | 348 | | |
376 | | - | |
377 | | - | |
378 | | - | |
379 | | - | |
380 | | - | |
381 | | - | |
382 | | - | |
383 | | - | |
384 | | - | |
385 | | - | |
386 | | - | |
387 | | - | |
388 | | - | |
389 | | - | |
390 | | - | |
391 | | - | |
392 | | - | |
393 | | - | |
394 | | - | |
395 | | - | |
396 | | - | |
397 | | - | |
398 | | - | |
399 | | - | |
400 | | - | |
401 | | - | |
402 | | - | |
403 | | - | |
404 | | - | |
405 | | - | |
406 | | - | |
407 | | - | |
408 | | - | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | | - | |
414 | | - | |
415 | | - | |
416 | | - | |
417 | 349 | | |
418 | 350 | | |
419 | 351 | | |
| |||
445 | 377 | | |
446 | 378 | | |
447 | 379 | | |
448 | | - | |
449 | | - | |
450 | | - | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
451 | 394 | | |
| 395 | + | |
452 | 396 | | |
453 | | - | |
454 | | - | |
455 | | - | |
456 | | - | |
457 | | - | |
458 | | - | |
459 | | - | |
460 | | - | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
461 | 405 | | |
462 | | - | |
463 | | - | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
464 | 409 | | |
465 | | - | |
466 | | - | |
467 | | - | |
468 | | - | |
469 | | - | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
470 | 414 | | |
471 | | - | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
472 | 419 | | |
473 | 420 | | |
474 | 421 | | |
475 | | - | |
476 | | - | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
477 | 426 | | |
478 | | - | |
479 | | - | |
480 | | - | |
| 427 | + | |
481 | 428 | | |
482 | 429 | | |
483 | 430 | | |
484 | 431 | | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
485 | 438 | | |
486 | 439 | | |
487 | 440 | | |
| |||
523 | 476 | | |
524 | 477 | | |
525 | 478 | | |
526 | | - | |
527 | | - | |
528 | | - | |
529 | | - | |
530 | | - | |
531 | | - | |
532 | | - | |
533 | 479 | | |
534 | 480 | | |
535 | 481 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | 57 | | |
117 | 58 | | |
118 | 59 | | |
| |||
141 | 82 | | |
142 | 83 | | |
143 | 84 | | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | 85 | | |
148 | 86 | | |
149 | 87 | | |
| |||
169 | 107 | | |
170 | 108 | | |
171 | 109 | | |
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 | 110 | | |
208 | 111 | | |
209 | 112 | | |
| |||
0 commit comments