Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

eBPF stack trace trie design #128

Open
chadbrewbaker opened this issue Mar 14, 2021 · 1 comment
Open

eBPF stack trace trie design #128

chadbrewbaker opened this issue Mar 14, 2021 · 1 comment

Comments

@chadbrewbaker
Copy link

https://github.com/iovisor/bcc/blob/master/tools/profile.py (what Pyroscope uses under the hood) is a far from optimal logging format for stack traces. I have a design in mind for a binary logger to save network bandwidth when exporting traces.

The logger would emit references to immutable trie pointers. When done, or when the trie overfills the memory limit - it would dump the trie tagged with the memory pointers.

Does this sound feasible? A more compressed version would have base64 counters on each trie node.

@chadbrewbaker
Copy link
Author

You could probably do something equivalent to https://engineering.fb.com/2018/12/19/core-data/zstandard/ too when using the same workload over and over. Have a stock trie you pre-load that is already trained with your data layout - then you only need to give a root pointer address and serialize the parts of the trie that grow from it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant