Hi guys,
I was wondering if I can disable all the efficiency cores in BIOS?
It seems like I can only reduce the number of efficiency cores to 1.
Thank you everyone.
Hi guys,
I was wondering if I can disable all the efficiency cores in BIOS?
It seems like I can only reduce the number of efficiency cores to 1.
Thank you everyone.
In Windows I was able to disable them by changing boot options, and perhaps there is a similar method in Linux. I have the i7-1280P which has 6 performance cores each with hyperthreading, so I limited the number of “processors” to 12 in msconfig > Boot tab > Advance Options. Through some experimentation I’m reasonably confident that the performance cores enumerate before the efficiency cores, so using this naive method of only allowing the first 12 processors seems to do the trick.
[edited original reply to correct the number of processors. didn’t mean to delete it]
Just out of curiosity, why would you want to do that?
The efficiency cores are size efficient but not power efficient. Most of my workloads don’t need so many cores so I would wish to only enable them when I need to.
I’ve been troubleshooting issues with applications that are multi-threaded AND timing-dependent, like multi-track digital audio production where dozens of independent signal processing chains need to all complete their calculations on time, millisecond after millisecond, in order for the entire musical score to playback without error. It appears that some of these threads end up on E cores and they can’t keep up with the other threads assigned to P cores, resulting in playback errors happening long before the entire CPU capacity is exhausted. Audio projects that played back flawlessly with 20-40% CPU usage on an 11th gen fail to play on a 12th gen. I’ve only had this machine for a month and I’m still testing, but so far disabling E cores has improved this particular problem. I’m guessing/hoping that in the long term, OS kernels and multi-threaded applications will get smarter about core assignment for threads so that this unfortunate workaround isn’t necessary. I’d really like to have all cores enabled.
I see, that makes sense. I use my laptop specifically for travel, so I don’t care much about that.
Can you also do the other way around, by disabling P cores? I wonder how much this would improve battery life, especially for longer trips when I just want to use the laptop for simple tasks, like reading emails and using vscode.
I am not sure how much battery you would save as the efficiency cores are size efficient, the voltage is the same though. I initially thought it was like the Apple M series chips but doesn’t seem to be efficient in the same way I guess.
Does the size efficient refer to the DIE size?
Yes, they are size efficient.
You may want to set the CPU affinity for your application and tie its threads to P cores only.
I’ve tinkered with this but it’s not very practical, at least with the methods I’ve discovered in Windows. Specifically, 1) affinity must be set every time the program is launched because it is set after the program is launched and any custom affinity is lost when the program closes, and 2) programs that launch and kill child processes throughout their lifetime require changing affinity for every child process as they come and go. Perhaps you know of a way to configure affinity before an application launches so that it always launches itself and any child processes with that custom affinity?
Last time I used Windows 20 years ago. Unfortunately, I can not help you there. I can only suggest looking into startup scripts or some extended settings.