Intel Developer's New Proposal For Shipping Optimized Glibc Subset (libcpu-rt-c)
While the Intel Open-Source Technology Center invests heavily into the GNU/Linux toolchain in ensuring their future processors will have their full feature set and performance potential exploited, when it comes to the GNU C Library "glibc" in particular it can be quite a while before Linux distributions pull in a new release that contains various Intel performance optimizations. As a result, Intel Linux veteran toolchain developer H.J. Lu has laid out a new proposal.
Intel does a lot of tuning to Glibc's math and string functions, among others, for ensuring they are optimized for today's processors with AVX-2/AVX-512 and other features. But as Linux distributions don't liberally pull in new Glibc releases, it can sometimes be years before users get to enjoy those optimizations.
The proposal drafted by H.J. Lu would be for maintaining the CPU run-time library (libcpu-rt-c) as a subset of Glibc that will be maintained in an always releasable state in Git that is binary compatible with existing x86-64 operating systems. The CPU run-time library will contain the optimized functions and work without having to pull in the latest Glibc releases. Basically a tuned underlying package that won't break any ABI compatibility and where the latest CPU tuned code can live, which can then be LD_PRELOAD'ed by a given application to override what's found in libc.so or be linked directly against the libcpu-rt-c library.
In experiments done with CentOS 7 on the old Glibc 2.17, this libcpu-rt-c optimized library approach often led to few percent performance improvements while not being intrusive with not having the headaches of pulling in a completely new Glibc release.
"Overall goal is to deliver the maximum performance to end users on Intel platforms and this proposal satisfy requirement with least overhead." This proposal was presented at last week's Linux Plumbers Conference and more details can be found via this PDF deck.
Intel does a lot of tuning to Glibc's math and string functions, among others, for ensuring they are optimized for today's processors with AVX-2/AVX-512 and other features. But as Linux distributions don't liberally pull in new Glibc releases, it can sometimes be years before users get to enjoy those optimizations.
The proposal drafted by H.J. Lu would be for maintaining the CPU run-time library (libcpu-rt-c) as a subset of Glibc that will be maintained in an always releasable state in Git that is binary compatible with existing x86-64 operating systems. The CPU run-time library will contain the optimized functions and work without having to pull in the latest Glibc releases. Basically a tuned underlying package that won't break any ABI compatibility and where the latest CPU tuned code can live, which can then be LD_PRELOAD'ed by a given application to override what's found in libc.so or be linked directly against the libcpu-rt-c library.
In experiments done with CentOS 7 on the old Glibc 2.17, this libcpu-rt-c optimized library approach often led to few percent performance improvements while not being intrusive with not having the headaches of pulling in a completely new Glibc release.
"Overall goal is to deliver the maximum performance to end users on Intel platforms and this proposal satisfy requirement with least overhead." This proposal was presented at last week's Linux Plumbers Conference and more details can be found via this PDF deck.
7 Comments