- Parca, the continuous profiling project for cloud-native applications.
- In-depth blogpost on unwinding native code without frame pointers.
- BPF code for our native unwinder.
- rbperf, a BPF profiler and tracer for Ruby.
- Design Decisions of a Continuous Profiler.
- CppCon 2017: Dave Watson “C++ Exceptions and Stack Unwinding”.
- DWARF Debugging Information Format Version 5.
- System V Application Binary Interface, AMD64 Architecture Processor Supplement.
- Fast and Reliable DWARF Unwinding, and Beyond.
- BPF Features by Linux Kernel Version.
- Fedora Decides After All To Allow Default Compiler Flag To Help Debugging/Profiling;
- Writing ARM64 code for Apple platforms "The frame pointer register (x29) must always address a valid frame record."
- Golang enabling frame pointers by default.
- Kernel unwinding:
Walking stacks of a host running Postgres, CPython, Ruby (MRI) applications (some with >90 frames)
P50: 285ns
P90: 370ns
Max: 428ns
(kernel 6.0.1`8 with Intel i7-8700K (late ‘17) )
We'll get more metrics this year.