Show Your Support: Did you know that the hundreds of articles written on Phoronix each month are mostly authored by one individual? Phoronix.com doesn't have a whole news room with unlimited resources and relies upon people reading our content without blocking ads and alternatively by people subscribing to Phoronix Premium for our ad-free service with other extra features.
LTO Support Coming To Linux 3.15, Making For A Faster Kernel
Earlier in April I wrote about link-time optimization support for the kernel nearing reality. LTO support for the Linux kernel has been in the works since 2012 but only with Linux 3.15 will it become a mainline possibility. Link-Time Optimizations via GCC and other compilers allow for various compile-time optimizations to be applied across the binary as a whole. Enabling link-time optimizations can yield some significant performance improvements but results in much slower compile times and with large programs can cause problems due to the size of optimizing the complete binary at once.
As explained in the earlier article, the work back in 2012 by Intel developers showed the kernel compile time increased by two to four times and needed 4~9GB of memory to complete the task. However, it was found the resulting Linux kernel image was faster in various benchmarks.
Sent in today by Michal Marek was LTO Kbuild support for Linux 3.15. "It is a separate branch, because it depends on other patches by Andi which were merged through other trees. The link-time-optimization build is an experimental feature, so there one kconfig option to enable it and another kconfig option to disable it (behind a door with a sign 'Beware of the Leopard'...), so that it is not enabled by allmodconfig/allyesconfig."
So it's still a very experimental feature, but it will land for the Linux 3.15 kernel. There's been no recent benchmark results shared of Linux 3.15 with LTO support, but as soon as the release candidates start coming out, we'll proceed to benchmark it at Phoronix. Generating a link-time optimized kernel also requires a new version of binutils and with the GCC 4.9 compiler are many LTO improvements. Stay tuned for benchmarks!