Low-overhead sampling profiler and tracer for Ruby for Linux
Full Changelog: https://github.com/javierhonduco/rbperf/compare/v0.3.0...v0.4.0
rbperf
fail for machines with certain CPU layouts, which seems to affect some AMD configurations. Found and fixed by @shaver in https://github.com/javierhonduco/rbperf/pull/50 🎉 .--enable-linenos
as it might not be accurate. Fetching accurate line numbers can be quite complex and is not implemented yet. More details in the PR.rbperf
packageable for distros.rbperf
is also shipped as a statically linked binary. Until now, libc and other libraries were required in the system, which was a problem in some distros that shipped older, incompatible versions. There's an added CI job to ensure that the static build worksxtask
task to generate the Ruby configuration files which contain details of its ABI we need to walk the stack rather than having all values manually generated. There's still some work to do to avoid duplication and ensure that every value is programmatically generated https://github.com/javierhonduco/rbperf/commit/ec4724d1c14473448c13dceec9b765b71b43cc4e;
This is the first rbperf release! 🎉
rbperf info
, which shows useful information about the system and the BPF features it supports https://github.com/javierhonduco/rbperf/commit/e81748a3861723e8891c28836467e147afbe2e8f;
rbperf record --pid <pid> syscall --list
lists the available system calls we can trace https://github.com/javierhonduco/rbperf/commit/eda4f218ed33a40be6de3416e7a066a22c153e64;
--ringbuf
the new ring buffer interface can be used instead of perf events. This new API can send data to userspace with lower overhead https://github.com/javierhonduco/rbperf/commit/8a1e048b0684f0b8d89b87e9b9d3e7b7e6f8425f;
--verbose-bpf-logging
to the record subcommand to enable BPF logging that can be tailed at /sys/kernel/debug/tracing/trace_pipe
. This is very useful while troubhleshooting BPF issues and having it as a flat helps reduce rbperf
's overhead as the loader removes branches that can be proved as non-reachable https://github.com/javierhonduco/rbperf/commit/422c5ca6ffd0d7693106b415d1daa742f84dcbc7;
Feel free to send any bugs, feedback, ideas, or comments, either by opening an issue or directly to me!
Thanks so much to all of you that have tried rbperf. Your feedback has been invaluable!