[RFC] [PoC] btf: LoadSpecFromReader: add filter param to optimize memory #1589
+198
−50
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a proof-of-concept. The code is not ready for merging but it shows it is possible to significantly reduce the memory consumption (by 27MB).
In the new LoadSpecFromReader, I added a filter parameter to only parse required kernel btf types.
Users of the cilium/ebpf package can get the list of relocations they programs require and give it to LoadKernelSpecWithFilter:
In my tests in Inspektor Gadget (with this branch), pprof flamegraph inuse_space shows a reduction of memory usage from 40MB to 12MB: btf.LoadKernelSpec() is completely removed from the flamegraph. It used to take 27MB.
Before:
After:
It works with parsing the BTF file in two passes:
@burak-ok @mauriciovasquezbernal @flyth