System profiling that unwinds stack without frame pointers and symbols
Blog post from Elastic
Elastic Universal Profiling™, developed from technology acquired from optimyze.cloud, introduces a novel approach to stack unwinding in production environments without relying on frame pointers or debug symbols. This continuous profiling product leverages C++ exception handling data, specifically the .eh_frame section, to enable frictionless profiling across various runtimes on Linux systems. Traditional methods of stack unwinding became impractical due to compiler optimizations that omit frame pointers, leading to challenges in profiling third-party libraries. The innovative solution involves using eBPF to detect executables without frame pointers, and a userspace agent processes the .eh_frame data into a more accessible format for kernel use, thus facilitating efficient stack unwinding. This approach allows Elastic Universal Profiling™ to provide comprehensive system-wide profiling capabilities without the need for recompilation or debug symbols, marking a significant advancement in observability tools for production systems.