In collaboration with Polar Signals we have committed that beginning with Ubuntu 24.04 LTS, our GNU Compiler Collection (GCC) package will enable frame pointers by default for 64-bit platforms. All packages in Ubuntu, with very few exceptions, will be rebuilt with frame pointers enabled, making them easier to profile and subsequently optimise.
“I’ve enabled frame pointers at huge scale for Java and glibc and studied the CPU overhead for this change, which is typically less than 1% and usually so close to zero that it is hard to measure. Frame pointers allow more complete CPU profiling and off-CPU profiling. The performance wins that these can provide far outweigh the comparatively tiny loss in performance. Ubuntu enabling frame pointers by default will be a huge win for performance engineering and the default developer experience”. said Brendan Gregg, computer performance expert and Intel Fellow.
↫ Oliver Smith on the official Ubuntu blog
So I guess the very minor performance regression is supposed to be compensated for by optimisations in individual packages that frame pointers will help realise.
Um…
If they cared that much about performance, they should abandon their efforts to shove snaps down user’s throats.
Oh, they certainly care about their enterprise user’s performance. Seems like another thing I can add to the example pile of Ubuntu abandoning serious desktop efforts in favor of that sweet server money.
ssh -X firefox
Not on ubuntu with snaps. Bell ends.
Fedora did that last year: https://fedoraproject.org/wiki/Changes/fno-omit-frame-pointer
Apart from few praises from developers, optimisations are yet to appear.
zdzichu,
I don’t see this being that useful. Obviously I have no qualms about developers profiling software, quite the opposite. But the value of running less optimal developer builds on end user machines (as opposed to development machines) is nearly nil. IMHO users should benefit from running the most efficient build.
Honestly I’ve never thought about the overhead of this option before. I am curious what the numbers actually look like. But just to add nuance to the discussion, even a small amount of overhead by a popular distro could increase the world’s power consumption by hundreds of megawatt hours, the equivalent of a full nuclear power plant dedicated to compensating for a sub-optimal compiler setting.
https://www.forbes.com/sites/christopherhelman/2016/06/28/how-much-electricity-does-it-take-to-run-the-internet/?sh=40eb515e1fff
https://www.americangeosciences.org/critical-issues/faq/how-much-electricity-does-typical-nuclear-power-plant-generate
“So I guess the very minor performance regression is supposed to be compensated for by optimisations in individual packages that frame pointers will help realise.”
Well, only if the optimizations will cause an increase in performance higher than the decrease caused by enabling them. Which, overall, it won’t. This is just crazy a$$ stupid. We should all just go back using gentoo and be done with this crap with snaps and all.
Well x64 has 16 general purpose registers. In x86 that only has 8 the impact was more important. And if we talk about Arm and RISC-V that have 32 the impact should be negigible.