Rendering tasks on Intel’ s 12th gen Core CPUs are automatically moved to the slower E-Cores when the programme is minimised? This problem can be solved quickly and easily under Windows 11 by selecting the “Best Performance” power mode. The following explains the background and provides current workarounds. This article is aimed at all those who use their Alder Lake CPU in any productivity scenario. It is not relevant for gaming or simple web/office use.
Intel’s P-Cores and E-Cores
Intel Core 12th Generation (“Alder Lake”) is the first x86 CPU platform that combines “big” and “little” cores. Windows 11 has introduced Intel’s new “Thread Director” that is supposed to intelligently handle which tasks are running on which cores. When running all-core rendering jobs (i.e. Cinebench, Prime95), the OS is supposed to use all cores (both E-Cores and P-Cores) at the same time.
Rendering jobs are pushed to E-Core when out of focus?
During productive use, users have noticed that some rendering jobs (i.e. not synthetic benchmarks) are moved by the OS to E-Cores as soon as the rendering job window is minimized or otherwise out of focus. According to this official video (relevant demonstration starting at timecode 1:11), this might even be part of Intel’s intended use-case.
Pushing rendering jobs to E-Cores obviously has a big performance impact, as it is leaving all the powerful P-Cores idle, making the render jobs take much more time than necessary. In order to reap the full performance potential of your CPU, you want to saturate all cores, ideally.
Confirmation of this issue from a 3rd party
The CPU microcode researcher Agner Fog has documented this issue in his article “Intel’s new Chimera: Alder Lake“, quote:
„The system is giving high priority only to the thread that has the user focus. This ignores the behavior of many users. A user who is waiting for the computer to finish a heavy duty task is typically not just sitting and waiting. He/she is more likely to do something else during the waiting time, for example checking mails.”
Agner Fog has conducted his research mostly on Alder Lake desktop systems without any relation to XMG. This confirms that this is issue affects the whole CPU and OS platform – it is not specific to any PC or laptop OEM.
How to check which core are being used
Alder Lake users can easily see which cores are saturated by setting Task Manager to show the performance diagram of the ‘logical processors’:
The E-Cores are always the last diagrams in this view, ending in te bottom right corner. In the following this screenshot with i7-12700H in XMG NEO 15 (E22), you can see how only the last 8 logical cores are saturated during this rendering job:
The first 12 logical cores (6 P-Cores multiplied by 2 for hyperthreading) are mostly idle. Task Manager shows this as “60% total utilisation”, but this number is misleading because Task Manager treats all logical cores equally and does not know about the specific difference in performance potential between E-Cores and P-Cores. In other words, the real utilisation is well below 50%. You can track this further by monitoring the CPU Package Power consumption during rendering jobs in a tool such as HWiNFO64. For more information, please check out the “What tuning and system software does XMG recommend?” in our FAQ section.
For the current release of Windows 11, there are two workarounds:
- Run the task with administrator rights.
- Set Windows 11 power modes to “Best Performance”.
Both these workarounds will make sure that your rendering job can saturate both E-Cores and P-Cores at the same time.
Workaround #1 is obviously a little bit crude, as you normally don’t want to elevate the privileges of tasks without good reason. Workaround #2 is probably the more sustainable solution. It might have some small impact on idle power consumption, as other background processes that would normally be pushed to E-Cores might now sometimes run on P-Cores as well. However, the impact should be tiny compared to other typical power consumption issues (e.g. dGPU not sleeping), as explained in in our FAQ article “Problems with battery life, idle power consumption, or relatively high fan noise despite low load.“
Another workaround would be to disable E-Cores completely. Disabling E-Cores is indeed possible in the BIOS setup of XMG NEO 15 (E22). But this solution is not desired either as it would of course sacrifice a substantial amount of the multi-core performance potential of your Alder Lake CPU.
Our recommend workaround is therefor to set the Windows 11 power mode to “Best performance”.
Future improvements in Windows 11
It is reasonable to assume that this behaviour might be improved or allow further end-user customization in future Windows 11 releases. Current documentation for the upcoming Windows 11 release “22H2” (2nd half of 2022) already mentions a new “Utility / Background services” classification for processes and threads. Perhaps the OS will be able to separate true background tasks (such as various Windows-internal maintenance tasks) from user-initiated rendering jobs.
Kernel 5.18 has introduced an implementation of Intel’s Thread Director for Linux, using the term “Intel Hardware Feedback Interface”. The scope of this update was presented in this article in February and be found in the kernel changelog. Documentation can be found here, but the HFI framework also touches upon other areas (such as thermals) and it is not immediately clear to us how Linux is going to seperate important user-initiated rendering jobs from simple system background tasks.
If you have any further questions on this issue or would like to share your own experiences with multi-core rendering on Alder Lake CPUs, please comment on reddit or Discord. We are looking forward to your feedback!