ORC Unwinder For Linux 4.14, Boosts Kernel Performance By Disabling Frame Pointers

Written by Michael Larabel in Linux Kernel on 4 September 2017 at 12:29 PM EDT. 40 Comments
Ingo Molnar submitted the Linux x86 Assembly updates today for the 4.14 merge window. What's interesting with the x86/asm code changes is the introduction of the ORC Unwinder.

The ORC Unwinder is a lightweight, Linux kernel debuginfo implementation with "DWARF done right for unwinding...
The ORC unwinder is almost two orders of magnitude faster than the (out of tree) DWARF unwinder - which is important for perf call graph profiling. It is also significantly simpler and is coded defensively: there has not been a single ORC related kernel crash so far, even with early versions. (knock on wood!)"

The ORC Unwinder alone isn't exciting or relevant for most of you, but by having ORC unwinder enabled, CONFIG_FRAME_POINTER can be disabled. CONFIG_FRAME_POINTER is enabled right now on most Linux distribution kernels, but disabling it can yield some performance advantages. The frame pointer option has the compiler add frame pointer code to every function of the kernel, but with it disabled, the kernel shrinks and yields better cache utilization and fewer instructions executed. System calls can be faster by 1~3% or by as much as 5~10% faster for some "function execution intense workloads."

More details via this pull request.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week