]> git.feebdaed.xyz Git - 0xmirror/ebpf.git/commit
kallsyms: don't allocate temporary slices
authorLorenz Bauer <lmb@isovalent.com>
Mon, 2 Jun 2025 12:23:42 +0000 (14:23 +0200)
committerTimo Beckers <ti-mo@users.noreply.github.com>
Mon, 2 Jun 2025 13:04:00 +0000 (15:04 +0200)
commit11710855ff728edbab4adecdc8069860b993f5d1
treed68c05798c92e7b19ce1b1e7883782f11edde2ae
parent410cd767f9ebfb8f825c70de671effaec4e283aa
kallsyms: don't allocate temporary slices

We currently allocate a lot of small strings to hold symbol and
module name. This happens even if we aren't interested in that
specific symbol.

Use the map[string([]byte)] optimization to remove temporary
allocations.

```
goos: linux
goarch: amd64
pkg: github.com/cilium/ebpf/internal/kallsyms
cpu: AMD Ryzen 7 3700X 8-Core Processor
                           │   old.txt   │              new.txt               │
                           │   sec/op    │   sec/op     vs base               │
AssignModules-16             3.326µ ± 0%   3.009µ ± 2%   -9.53% (p=0.002 n=6)
AssignAddresses-16           4.187µ ± 1%   3.351µ ± 1%  -19.98% (p=0.002 n=6)
AssignModulesKallsyms-16     307.1m ± 3%   294.3m ± 7%   -4.15% (p=0.002 n=6)
AssignAddressesKallsyms-16   322.7m ± 2%   301.7m ± 2%   -6.52% (p=0.002 n=6)
geomean                      1.084m        972.6µ       -10.26%

                           │     old.txt      │               new.txt               │
                           │       B/op       │     B/op      vs base               │
AssignModules-16                 4.258Ki ± 0%   4.172Ki ± 0%   -2.02% (p=0.002 n=6)
AssignAddresses-16               4.453Ki ± 0%   4.141Ki ± 0%   -7.02% (p=0.002 n=6)
AssignModulesKallsyms-16      8458.543Ki ± 0%   4.312Ki ± 0%  -99.95% (p=0.002 n=6)
AssignAddressesKallsyms-16   12586.352Ki ± 0%   4.219Ki ± 0%  -99.97% (p=0.002 n=6)
geomean                          212.0Ki        4.210Ki       -98.01%

                           │     old.txt     │              new.txt               │
                           │    allocs/op    │ allocs/op   vs base                │
AssignModules-16                 11.000 ± 0%   5.000 ± 0%   -54.55% (p=0.002 n=6)
AssignAddresses-16               21.000 ± 0%   3.000 ± 0%   -85.71% (p=0.002 n=6)
AssignModulesKallsyms-16      323560.00 ± 0%   12.00 ± 0%  -100.00% (p=0.002 n=6)
AssignAddressesKallsyms-16   536565.000 ± 0%   7.000 ± 0%  -100.00% (p=0.002 n=6)
geomean                          2.517k        5.958        -99.76%
```

Signed-off-by: Lorenz Bauer <lmb@isovalent.com>
Co-authored-by: Timo Beckers <timo@isovalent.com>
internal/kallsyms/kallsyms.go
internal/kallsyms/kallsyms_test.go