Alder Lake performance fix emerges for Linux kernel 5.16

The mixture of performance and efficiency CPUs in Intel’s 12th-gen Core processors, code-named Alder Lake, hasn’t just been causing problems for some Windows gamers – it almost led to complications for Linux.

Phoronix’s Michael Larabel noticed a performance hit in the kernel a fortnight ago – in a work-in-progress release candidate, we should stress – and a fix for the scheduling code landed a little later. It turned out the kernel suffered on Alder Lake chips due to a performance-enhancing tweak for another Intel processor family: the multiple-Atom-core-based Jacobsville.

This year, Intel officially canned its Lakefield chips. These consisted of a performance core called Sunny Cove as well as Atom-class efficiency cores dubbed Tremont. Crucially, there are still multi-Tremont-core embedded processors out there, such as Snow Ridge. These are server and infrastructure-oriented components with up to 24 cores.

The first proposed cut of kernel 5.16, specifically 5.16-rc1, contained a revision to the scheduler that makes it aware that some clusters of cores share a block of L2 cache – as seen in Snow Ridge and Jacobsville.

Unfortunately, this had a side effect. Alder Lake chips have a mixture of efficiency and performance cores, but it seems they all report themselves to the kernel as having the same maximum performance. This leads the kernel to schedule performance-critical tasks onto the efficiency cores – actually reducing overall performance.

Now it’s been fixed, or so we’re told, and we all get to see an example of Linux kernel development in action. Unless you installed a release candidate on your Alder Lake machine with the initial scheduler tweak, you won’t have felt the slowdown effects.

As usual there are multiple other tweaks and improvements coming to the kernel, including performance improvements, better Raspberry Pi Compute Module support, and live migration of AMD’s encrypted virtual machines. There’s also a new kernel function call, sys_futex_waitv(), which reproduces a Windows kernel function call in order to improve the performance of Windows games being played on Linux using WINE – another sign that such things are becoming more mainstream. ®

Source link

Related Articles

Back to top button