Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
btf: Optimize string table for globally increasing offsets
After doing some observations while parsing VMLinux, it seems that the lookup access pattern for strings is mostly globally increasing with with some patches of seemingly unpridicable offsets. This is a sample of the access pattern, numbers are the index into the string table, not the offset: ``` 1112 1113 1114 348 78 1115 1116 372 1117 1118 1119 ``` This commit adds logic to track this globally increasing offset and checks if the if the offset at the next expected index matches the offset we are looking for. If it does, we can skip the binary search. In VMLinux this fast path is taken about 50% of the time, resulting in about a 7% speedup. ``` goos: linux goarch: amd64 pkg: github.com/cilium/ebpf/btf cpu: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz │ before.txt │ after.txt │ │ sec/op │ sec/op vs base │ ParseVmlinux-16 48.52m ± 1% 44.79m ± 1% -7.69% (n=100) │ before.txt │ after.txt │ │ B/op │ B/op vs base │ ParseVmlinux-16 31.45Mi ± 0% 31.45Mi ± 0% ~ (p=0.127 n=100) │ before.txt │ after.txt │ │ allocs/op │ allocs/op vs base │ ParseVmlinux-16 534.1k ± 0% 534.1k ± 0% ~ (p=0.130 n=100) ``` Signed-off-by: Dylan Reimerink <dylan.reimerink@isovalent.com>
- Loading branch information