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.
I would like also to disable all P cores.
I also can see in the BIOS only the option to go down to 1 P core - but the BIOS text writes about being able to go down to 0.
Anyone know a way yet to disable all P cores in BIOS?
Intel’s CPUs that have p-cores and e-cores need at least 1 p-core to function properly. Also, if your plan is to disable the p-cores to improve battery life then I highly recommend you don’t. This will ruin your processors efficiency which means that while you will get better battery life, the time it takes to process the same instructions will take longer. The best thing for efficiency is to keep all of the cores active and to use the latest drivers from Intel. Also, using more efficient software will also help (less electron apps and more native applications for instance).
I don’t know about BIOS settings for this, but in Linux one can disable individual CPU cores.
e.g.
cat /sys/devices/system/cpu/online
tells you which cpus are online.
echo 0 > /sys/devices/system/cpu/cpu0/online
switches cpu core 0 off.
echo 1 > /sys/devices/system/cpu/cpu0/online
switches cpu core 0 on.
So, you could use this to switch off the efficiency cores if you wished.
[quote=“Chris_J, post:15, topic:21359, full:true”]
Intel’s CPUs that have p-cores and e-cores need at least 1 p-core to function properly.[/quote]
That’s interesting, and strange =-)
It’s not for this. It’s to reduce heat generation.
That’s looks fantastic!
I’ll give it go.
I’ve disabled via /proc.
It looks like it works - those cores are not now in use.
Will see how much difference it makes to thermals / performance.