Javierhonduco Rbperf Versions Save

Low-overhead sampling profiler and tracer for Ruby for Linux

v0.4.0

1 year ago

Notable changes

Full Changelog: https://github.com/javierhonduco/rbperf/compare/v0.3.0...v0.4.0

v0.3.0

1 year ago

Notable changes

  • Only set a perf event on present CPUs. This was making 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 🎉 .
  • Add support for Ruby 3.1.3 https://github.com/javierhonduco/rbperf/pull/53.
  • Added support for rudimentary line number tracking in https://github.com/javierhonduco/rbperf/pull/52. This is opt-in with --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.
  • Updated kernel headers for BTF to kernel 6.0.18-200.
  • Set all dependencies to published versions. Git was used for some unreleased features we needed. Changing this to released versions allows us to make rbperf packageable for distros.
  • Before this commit we used the system's libelf and libz, which might be different across hosts. Now we download and build them to ensure that we have more control over our non-rust dependencies and that we compile them with Clang + with frame pointers (more on this coming in a few weeks!). Starting from this release, we'll ship the release versions specified here.
  • Updated CI to Rust 1.67.0 which revamps the queue we use to send events from BPF to the workers that process them.

v0.2.1

1 year ago

Changes

  • Now 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 works
  • Enabled LTO for release builds, reducing binary size enough to produce binaries with the same size even though now they are statically linked
  • Fixes to allow profiling Ruby processes that are statically linked, rather than dynamically linking libruby

v0.2.0

1 year ago

Changes

v0.1.0

1 year ago

This is the first rbperf release! 🎉

New features

Feel free to send any bugs, feedback, ideas, or comments, either by opening an issue or directly to me!

Removed features (so far)

  • Uprobe/USDTs have not been implemented yet. This is super useful, especially for allocation profiling and will come later on;
  • There's no binary format. While it would be very useful to have an intermediate format that can be converted to a variety of outputs, such as flamegraphs and so on, I wanted to keep the focus on correctness in improving the current code and APIs. Once these things are fleshed out the binary format will be reconsidered

Acknowledgements

Thanks so much to all of you that have tried rbperf. Your feedback has been invaluable!