“The overhead of adding frame pointers to everything (libc and Java) was usually less than 1%, with one exception of 10%.”
GCC freed the frame pointer register on i386 to beat Intel’s compiler, and the same trick got copied to x86-64, which already had over a dozen registers. For 20 years that broke stack walking in perf and eBPF, and flame graphs quietly lost 15% of samples to “[unknown]”. Gregg measured the cost of putting frame pointers back at usually under 1%. Fedora and Ubuntu are only now fixing it. A benchmark win from 2004 cost the industry two decades of broken profilers.