Fedora's FESCo Rejects The Idea Of "-fno-omit-frame-pointer" As Default Compiler Flag
The past few months there has been a change proposal discussed around adding "-fno-omit-frame-pointer" to the default compilation flags for packages being built for Fedora Linux. Adding this option would improve the profiling/debug-ability of the packages but with possible performance implications. The Fedora Engineering and Steering Committee (FESCo) has now rejected this contentious change proposal.
As a change proposal first initiated by Meta/Facebook developers, they wanted -fno-omit-frame-pointer and -mno-omit-leaf-frame-pointer to be added to the default C/C++ compilation flags.In turn this would improve the effectiveness of profiling and debugging tools but with some possible performance overhead.
The compiler option ensures that a frame pointer is always available but when currently omitting it, three instructions per function are saved and the RBP frame/base pointer register can be used as a general purpose register for other purposes.
Meta engineers believe that any performance cost is small and worth it while SUSE engineers previously cited around possible 5~10% regressions. I had ran some quick benchmarks during the summer and indeed found various performance regressions when building with -fno-omit-frame-pointer as there simply isn't getting around the loss of a register, etc.
Over the past several months Fedora stakeholders have continued debating whether "-fno-omit-frame-pointer" by default makes sense for improving the debug/profiling characteristics for all packages but with debated performance costs. The Fedora Engineering and Steering Committee voted this past week and has rejected the change proposal.
It was noted that the Red Hat Platform Tools team came out and opposed it. FESCo in turn rejected it with voting on the basis of +2, 1, -4.
Since then some have already questioned FESCo and are trying to bring up this change proposal yet again but it doesn't appear that will go through at least in the near-term. The debating over this -fno-omit-frame-pointer behavior for Fedora can be found via this FESCo issue ticket.
As a change proposal first initiated by Meta/Facebook developers, they wanted -fno-omit-frame-pointer and -mno-omit-leaf-frame-pointer to be added to the default C/C++ compilation flags.In turn this would improve the effectiveness of profiling and debugging tools but with some possible performance overhead.
The compiler option ensures that a frame pointer is always available but when currently omitting it, three instructions per function are saved and the RBP frame/base pointer register can be used as a general purpose register for other purposes.
Meta engineers believe that any performance cost is small and worth it while SUSE engineers previously cited around possible 5~10% regressions. I had ran some quick benchmarks during the summer and indeed found various performance regressions when building with -fno-omit-frame-pointer as there simply isn't getting around the loss of a register, etc.
Over the past several months Fedora stakeholders have continued debating whether "-fno-omit-frame-pointer" by default makes sense for improving the debug/profiling characteristics for all packages but with debated performance costs. The Fedora Engineering and Steering Committee voted this past week and has rejected the change proposal.
It was noted that the Red Hat Platform Tools team came out and opposed it. FESCo in turn rejected it with voting on the basis of +2, 1, -4.
Since then some have already questioned FESCo and are trying to bring up this change proposal yet again but it doesn't appear that will go through at least in the near-term. The debating over this -fno-omit-frame-pointer behavior for Fedora can be found via this FESCo issue ticket.
34 Comments