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.
Introduce ring buffers
Ring buffers offer several advantages compared to perf buffers, and they
are the more modern solution for BPF -> userspace communication. They
were introduced in Linux 5.8 so to ensure compatibility with older
kernels this commit chooses ring buffers if they are available. This can
be overriden with
--force-perf-buffer
.Two of the reasons why ring buffers are quite exciting are potentially
less overhead when polling, thanks to the adaptative mechanism to try to
balance overhead while minimising lost samples and sharing the memory
for all the CPUs rather than having to have static per-CPU memory
regions which can be less fair.
Future work
The size of the ring buffers hasn't been tuned properly yet.
Test Plan
Lots of manual tests + CI
vmtest: Specify architecture and use /tmp
By default, the env var TMDIR is queried, which might not be shared in
the test VMs.