Forcing performance mode for background app on Intel P/E-core CPU


it's a feature of a CPU not an issue.
That may be the case, but it's poorly implemented in Windows. The whole point of E-cores is not to be efficient in terms of performance per watt - because they are less energy-efficient than P-cores. The E-cores are efficient in terms of die space, so Intel can squeeze a lot more cores into the same die area in order to compete with AMD in heavily multi-threaded applications. So the primary task of the Thread Director and Windows scheduler is not to be power-efficient by using the E-cores as much as possible (because that achieves the opposite), but to assign the precious P-cores to apps that require the most performance in a given scenario. Prioritizing foreground apps is generally a good idea in that context, but there are many exceptions (like video encoding or server functions) where we desperately need better control over this...

Edit: Sure, I'll take a look at XTU, but at the core it's still an OS issue.
 

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    Core i9 13900K
    Motherboard
    Asus Z690-I
    Memory
    64GB DDR5
    Graphics Card(s)
    3080Ti
    Hard Drives
    Samsung 990 Pro 2TB
    PSU
    Coolermaster SFX 750W
    Cooling
    Custom loop
That may be the case, but it's poorly implemented in Windows. The whole point of E-cores is not to be efficient in terms of performance per watt - because they are less energy-efficient than P-cores. The E-cores are efficient in terms of die space, so Intel can squeeze a lot more cores into the same die area in order to compete with AMD in heavily multi-threaded applications. So the primary task of the Thread Director and Windows scheduler is not to be power-efficient by using the E-cores as much as possible (because that achieves the opposite), but to assign the precious P-cores to apps that require the most performance in a given scenario. Prioritizing foreground apps is generally a good idea in that context, but there are many exceptions (like video encoding or server functions) where we desperately need better control over this...

Edit: Sure, I'll take a look at XTU, but at the core it's still an OS issue.
Your mention here of server functions made me think of this setting, have you tried it yet to see if it makes a difference?
Screenshot 2023-06-20 191729.png

LTT has just done a TechQuickie vid on the Windows & CPU scheduling features, quite informative even if it doesn't solve your original issue.
 
Last edited:

My Computer

System One

  • OS
    Windows 11 Pro 22H2, build: 22621.521
    Computer type
    PC/Desktop
    Manufacturer/Model
    Scan 3XS Custom 1700
    CPU
    Intel i7-12700K 3.6GHz Base (5.0GHz Turbo)
    Motherboard
    Asus ProArt Creator B660 D4
    Memory
    64GB DDR 3600Mhz
    Graphics Card(s)
    Asus Tuff RTX 3080 10GB OC
    Sound Card
    Onboard Realtek
    Monitor(s) Displays
    Gigabyte G32QC 32inch 16:9 curved @2560 x 1440p 165Hz Freesync Premium Pro/ Dell SE2422H 24inch 16:9 1920 x 1080p 75Hz Freesync
    Screen Resolution
    2560 x 1440p & 1920 x 1080p
    Hard Drives
    WD SN570 1TB NVME (Boot), Samsung 870QVO 1TB (SSD), SanDisk 3D Ultra 500Gb (SSD) x2, Seagate 3Tb Expansion Desk (Ext HDD), 2x Toshiba 1Tb P300 (Ext HDD)
    PSU
    Corsair RM1000X Modular
    Case
    Corsair 4000D Airflow Desktop
    Cooling
    Corsair Hydro H150i RGB Pro XT 360mm Liquid Cooler, 3 x 120mm fans, 1x Exhaust
    Keyboard
    Microsoft Ergonomic
    Mouse
    Logitech G402
    Internet Speed
    800Mbs
    Browser
    Edge Chromium
    Antivirus
    Defender, Malwarebytes
@DigitalGoat Good point, I tried setting it to "background services" but it doesn't affect P/E-core switching, still the same behavior.

Here's how it looks when the app window is visible. The top 16 threads are P-core threads (8 P-cores with HT), the bottom 16 are E-cores (non-HT):
FG.png
It's not optimized to max out all CPU threads but it's clearly using more than just the P-cores and all the heavy load is done on the P-cores. When the window is minimized or covered by another app, it looks like this:
BG.png
So it looks like the app gets completely banished from the P-cores, not just de-prioritized, but I'm not sure if it's allowed to use P-cores once all E-cores are maxed out. Regardless, that's the big problem here, probably even worth getting an additional screen (or a virtual one) just to keep the app window drawn at all times...

I tried out the "Process Lasso" app, which has some fancy advanced task manager features, but none of them changed the P-core banning behavior even if they sound as though they should. I tried "Application Power Profile" (high performance), "Efficiency mode" (off), "Exclude from ProBalance", "Induce Performance Mode", "Disable IdleSaver", "Exclude from Foreground Boost" (that sounds detrimental) - none of these had any effect on the CPU thread usage behavior; I also restarted the app when testing, in case the features can't be applied while the app is running.

I checked the Intel XTU utility, which requires you to uninstall Windows Hyper-V (wtf!?), but it only has OC features and nothing related to the Thread Director or scheduling.

I'm running out of ideas other than keeping the app window on screen at all times...
 

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    Core i9 13900K
    Motherboard
    Asus Z690-I
    Memory
    64GB DDR5
    Graphics Card(s)
    3080Ti
    Hard Drives
    Samsung 990 Pro 2TB
    PSU
    Coolermaster SFX 750W
    Cooling
    Custom loop
I understand your frustration but a couple of points;
E-cores are much faster at completing tasks even at lower power use than a P-Core's HT use so the hit to performance may not be as great as you suspect when the app is in the background.
It sounds like there is a problem with the way the app in question has been developed or it may just need updating to fit the modern CPU/ OS architecture.
Looking at your last two images it appears things are working as they should do, foreground full speed ahead, background take a ticket, the only way around that I see would be a setting for the actual app in question to 'keep on top' or 'keep in foreground' where it could request higher performance constantly, but even then the thread director and scheduler could override such behaviour I think.

If a utility such as you are looking for exists I would think it could be found in the server segment if anywhere, you could also try asking on the MS technet forums and others like code project and stack exchange where less corporate developers tend to pool resources and solutions.

Part of the problem with finding a utility capable of doing what you want is that a developer would need both an intimite knowledge of the Windows scheduler and of Intels thread director and how they interface with the OS/ apps, maybe the features are just too complicated to hook into, just too new or there is not enough demand for a utility such as you want to exist, yet.
Good luck with your search. :-)
 

My Computer

System One

  • OS
    Windows 11 Pro 22H2, build: 22621.521
    Computer type
    PC/Desktop
    Manufacturer/Model
    Scan 3XS Custom 1700
    CPU
    Intel i7-12700K 3.6GHz Base (5.0GHz Turbo)
    Motherboard
    Asus ProArt Creator B660 D4
    Memory
    64GB DDR 3600Mhz
    Graphics Card(s)
    Asus Tuff RTX 3080 10GB OC
    Sound Card
    Onboard Realtek
    Monitor(s) Displays
    Gigabyte G32QC 32inch 16:9 curved @2560 x 1440p 165Hz Freesync Premium Pro/ Dell SE2422H 24inch 16:9 1920 x 1080p 75Hz Freesync
    Screen Resolution
    2560 x 1440p & 1920 x 1080p
    Hard Drives
    WD SN570 1TB NVME (Boot), Samsung 870QVO 1TB (SSD), SanDisk 3D Ultra 500Gb (SSD) x2, Seagate 3Tb Expansion Desk (Ext HDD), 2x Toshiba 1Tb P300 (Ext HDD)
    PSU
    Corsair RM1000X Modular
    Case
    Corsair 4000D Airflow Desktop
    Cooling
    Corsair Hydro H150i RGB Pro XT 360mm Liquid Cooler, 3 x 120mm fans, 1x Exhaust
    Keyboard
    Microsoft Ergonomic
    Mouse
    Logitech G402
    Internet Speed
    800Mbs
    Browser
    Edge Chromium
    Antivirus
    Defender, Malwarebytes
Looking at your last two images it appears things are working as they should do, foreground full speed ahead, background take a ticket
I understand the purpose of "auto mode" and it's usually desired behavior for desktop/workstation use, but it's kind of outrageous not to let the user override the auto-mode for CPU-intensive background tasks and expecting each app to do the override itself through some API. It should be trivial to have an override flag in task manager or wherever to NOT have the window state dictate an app's performance. Having an entire (virtual) desktop dedicated to such apps would be a comical solution, but also well in line with all the MS screw-ups we're used to...

I also highly doubt that there is any issue like that (and hence a solution) in the server world because the P/E-core architecture is not meant for the server market, at least not yet.
 

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    Core i9 13900K
    Motherboard
    Asus Z690-I
    Memory
    64GB DDR5
    Graphics Card(s)
    3080Ti
    Hard Drives
    Samsung 990 Pro 2TB
    PSU
    Coolermaster SFX 750W
    Cooling
    Custom loop
Windows 11 scheduler heavily prioritizes the E-cores for apps that are not being drawn on the screen (i.e. whose window is minimized or completely covered by another foreground app). This leads to poor performance of demanding multi-threaded background tasks such as video encoding.
I did some testing with x265 encoder on Windows 10 and Windows 11.

On Windows 10 running the task with Administrator rights does make it use the P-cores and when the window is minimized. Performance is identical to when the window is in focus. Also, "Above Normal" process priority gave me the best performance.

my reddit post with some more detailed findings
 

My Computer

System One

  • OS
    Windows 10
I did some testing with x265 encoder on Windows 10 and Windows 11.

On Windows 10 running the task with Administrator rights does make it use the P-cores and when the window is minimized. Performance is identical to when the window is in focus. Also, "Above Normal" process priority gave me the best performance.

my reddit post with some more detailed findings
Which encoder was that?

Well, sounds like an easy solution on Windoes 10, too bad it doesn't work on 11. You also mentioned "best performance" power mode makes it use P-cores in the background on Windows 11 (but not fully), which I could never observe. Do you mean the "high performance" plan in the power options or seomething else?
 

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    Core i9 13900K
    Motherboard
    Asus Z690-I
    Memory
    64GB DDR5
    Graphics Card(s)
    3080Ti
    Hard Drives
    Samsung 990 Pro 2TB
    PSU
    Coolermaster SFX 750W
    Cooling
    Custom loop
No. Start > Settings > System > Power & battery. For power mode choose "Best Performance".
That setting seems to exist only on laptops. On desktops the settings page is just "Power", not "Power & battery", so the battery saving options don't apply.
 

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    Core i9 13900K
    Motherboard
    Asus Z690-I
    Memory
    64GB DDR5
    Graphics Card(s)
    3080Ti
    Hard Drives
    Samsung 990 Pro 2TB
    PSU
    Coolermaster SFX 750W
    Cooling
    Custom loop
This is on my desktop;
Screenshot 2023-08-11 075514.png
 

My Computer

System One

  • OS
    Windows 11 Pro 22H2, build: 22621.521
    Computer type
    PC/Desktop
    Manufacturer/Model
    Scan 3XS Custom 1700
    CPU
    Intel i7-12700K 3.6GHz Base (5.0GHz Turbo)
    Motherboard
    Asus ProArt Creator B660 D4
    Memory
    64GB DDR 3600Mhz
    Graphics Card(s)
    Asus Tuff RTX 3080 10GB OC
    Sound Card
    Onboard Realtek
    Monitor(s) Displays
    Gigabyte G32QC 32inch 16:9 curved @2560 x 1440p 165Hz Freesync Premium Pro/ Dell SE2422H 24inch 16:9 1920 x 1080p 75Hz Freesync
    Screen Resolution
    2560 x 1440p & 1920 x 1080p
    Hard Drives
    WD SN570 1TB NVME (Boot), Samsung 870QVO 1TB (SSD), SanDisk 3D Ultra 500Gb (SSD) x2, Seagate 3Tb Expansion Desk (Ext HDD), 2x Toshiba 1Tb P300 (Ext HDD)
    PSU
    Corsair RM1000X Modular
    Case
    Corsair 4000D Airflow Desktop
    Cooling
    Corsair Hydro H150i RGB Pro XT 360mm Liquid Cooler, 3 x 120mm fans, 1x Exhaust
    Keyboard
    Microsoft Ergonomic
    Mouse
    Logitech G402
    Internet Speed
    800Mbs
    Browser
    Edge Chromium
    Antivirus
    Defender, Malwarebytes

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    Core i9 13900K
    Motherboard
    Asus Z690-I
    Memory
    64GB DDR5
    Graphics Card(s)
    3080Ti
    Hard Drives
    Samsung 990 Pro 2TB
    PSU
    Coolermaster SFX 750W
    Cooling
    Custom loop
Hi everyone,
any news on this topic? I recently discovered the problem and the only solution I found was to disable the E-Cores of my 13900K.
In a FEM analysis that took about 5 minutes with P+E-Cores on, I went to 35 seconds with E-Cores off!!!

Having 16 cores turned off makes me feel a little sad given the cost of the processor, have you found any tricks to resolve this?

Thanks in advance
 
Last edited:

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    13900K
    Motherboard
    Gigabyte Z790 UD AX
    Memory
    DDR5 32 GB
    Graphics Card(s)
    Nvidia RTX 4070
In a FEM analysis that took about 5 minutes with P+E-Cores on, I went to 35 seconds with E-Cores off!!!

What's the core load according to task manager in normal mode and with E-cores off? Also, does the application run in a foreground window? Then it should use P+E cores. If it's minimized or in the background, it will only use E-cores, then the overall performance will be horrible, of course. Does it even have a window or is it a background service? If it's the latter, there is no way to circumvent the P-core ban (other than disabling E-cores altogether) unless the service uses the Windows API to request P cores.
 

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    Core i9 13900K
    Motherboard
    Asus Z690-I
    Memory
    64GB DDR5
    Graphics Card(s)
    3080Ti
    Hard Drives
    Samsung 990 Pro 2TB
    PSU
    Coolermaster SFX 750W
    Cooling
    Custom loop
What's the core load according to task manager in normal mode and with E-cores off? Also, does the application run in a foreground window? Then it should use P+E cores. If it's minimized or in the background, it will only use E-cores, then the overall performance will be horrible, of course. Does it even have a window or is it a background service? If it's the latter, there is no way to circumvent the P-core ban (other than disabling E-cores altogether) unless the service uses the Windows API to request P cores.
Hi,
the Core load with P+E enabled is around 20-25%, with E-Cores disabled, 100%.
The application does not run in the foreground, it is a background services. I noticed the same behavior with the better known WinRar 64bit...

Thanks
 

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    13900K
    Motherboard
    Gigabyte Z790 UD AX
    Memory
    DDR5 32 GB
    Graphics Card(s)
    Nvidia RTX 4070
the Core load with P+E enabled is around 20-25%, with E-Cores disabled, 100%.
I meant, can you see that the P-cores are idling and only the E-cores are used in P+E mode?

Yeah, if it's a window-less service, there's not much you can do to use all cores except changing the OS...
 

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    Core i9 13900K
    Motherboard
    Asus Z690-I
    Memory
    64GB DDR5
    Graphics Card(s)
    3080Ti
    Hard Drives
    Samsung 990 Pro 2TB
    PSU
    Coolermaster SFX 750W
    Cooling
    Custom loop
Yeah, if it's a window-less service, there's not much you can do to use all cores except changing the OS...

I was hoping that in recent months they had found a solution... WinRar also suffers from the same problem, is it possible that it doesn't bother anyone?
 

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    13900K
    Motherboard
    Gigabyte Z790 UD AX
    Memory
    DDR5 32 GB
    Graphics Card(s)
    Nvidia RTX 4070
is it possible that it doesn't bother anyone?
It's (I suppose) a Win11 problem and our applications are a small niche for these CPUs. Dedicated "high performance computing" tends to be done with Threadrippers or straight away server CPUs and on other OSes, so nobody will ever care about this, unfortunately.
 

My Computer

System One

  • OS
    Windows 11
    Computer type
    PC/Desktop
    CPU
    Core i9 13900K
    Motherboard
    Asus Z690-I
    Memory
    64GB DDR5
    Graphics Card(s)
    3080Ti
    Hard Drives
    Samsung 990 Pro 2TB
    PSU
    Coolermaster SFX 750W
    Cooling
    Custom loop
For myself i've been using this solution for minimized application problem on 21H2 - alter background profile to use all cores E+P:

powercfg /setacprofileindex scheme_current profile_background schedpolicy 2
powercfg /setacprofileindex scheme_current profile_background shortschedpolicy 2
powercfg /setdcprofileindex scheme_current profile_background schedpolicy 2
powercfg /setdcprofileindex scheme_current profile_background shortschedpolicy 2
powercfg /setactive scheme_current

Then restart computer.


And following reg file to revert this changes:

Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\93b8b6dc-0698-4d1c-9ee4-0644e900c85d\c04a802d-2205-4910-ae98-3b51e3bb72f2\381b4222-f694-41f0-9685-ff5bb260df2e]

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\bae08b81-2d5e-4688-ad6a-13243356654b\c04a802d-2205-4910-ae98-3b51e3bb72f2\381b4222-f694-41f0-9685-ff5bb260df2e]


Did not check this on 22H2. Please back up your HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings before applying this tweak.
 

My Computer

System One

  • OS
    Window 11
@lexa_a - thanks for this. I wonder can you say if this works on Windows 10 or if you might be able to advice a similar solution in Windows 10?

I have observed an itentical issue. In my case I am running optimisation solvers through Python and Julia and often am running via remote desktop... so unless I am there staring at my simulations, which can often take over 24 hours to run, my tasks are condemned to the efficiency cores. Granted, the 13900K was a very poor choice for my use case. Even my 5950x machine will out perform the 13900K here.
 

My Computer

System One

  • OS
    Windows 10
So, in my case I am using the Julia programming language and this works:
Code:
powercfg /powerthrottling disable /path "C:\Julia\Julia-1.8.3\bin\julia.exe"

Thanks to @lexa_a for pointing me in the right direction
 

My Computer

System One

  • OS
    Windows 10
Back
Top Bottom