[GUIDE] Turning off p-cores to further decrease power consumption while idle

In linux hotplugging cpu cores is supported, so if you want to save some additional power you can do so by just turning off some of your powercores.

I was able to save 0.72 watts in idle. Bringing my idle power consumption from 2.5 to 1.78 That’s not much but if you want to get the most out of your battery, it may help you a little more.

That’s the line of code needed for turning them off.

for i in {1..12}; do echo 0 | sudo tee /sys/devices/system/cpu/cpu${i}/online; done

This line turns the cores from id 1 to id 12 off. so only 3 e-cores and 1 p-core stays alive. (If you are using the i5 1340p like me)
That’s more than enough for your office work and a some browsing.

If you want to change it, just modify the number in the for in loop from 12 to whatever you need.
The first id are typically the power cores followed by the efficiency cores at the end.

If you want to turn your cores on again you can do this either by changing the value written by echo to 1 or reboot your system.

4 Likes

That’s something I feel I might wanna do too for my i7-1260p. Does workloads move to e-cores? How does waking the P-Cores work?

Another add on question, can we disable turbo boosting on e-cores be it on battery or plugged in?

This is great, but I would think the true power savings and thermal savings would be found when things are not idle. I’m wondering about the thermals especially. Do you have any idea of how this does on keeping things cool?

1 Like

Well i still try to analyze what happens when applied, i noticed a drop in power consumption.

The sad thing is that cpu0 is a p-core and it’s usage did rise too, this specific core can’t be turned off, but more load was put on the e-cores, as they are the only cores left except for the one p-core that has to stay.

I will try to create a benchmark for getting some comparable results under load.

1 Like

You can disable turbo boost in the tlp file

CPU_BOOST_ON_AC=1

So i put my framework under full load, with tlp, wifi and bluetooth enabled.

First with all cores. I reached 18W and about 60°C

Than with only 1 p-core and 3 e-cores. Power dropped to 11.5W and 50°C.

1 Like

Under lighter load like watching a video on youtube the difference in power consumption becomes smaller again. Similar to the one measured in idle.
~0.5-0.7W

3 Likes

A 10-degree temperature difference is pretty significant though. I wonder if you you could give a idle temp for both full cores and the reduced p cores?

1 Like

I was thinking specifically on E Cores, supposedly their Turbo Boost is so inefficient that it is worse than P Cores, so I was thinking to keep E Cores at their efficiency sweet spot while allowing P Cores to boost, not sure if it really gives hard power savings or not though.

I think you can.

Under /sys/devices/system/cpu/cpuX/cpufreq you can manually finetune each core.

But how much your system will benefit from this i am unsure.

1 Like

i can but i doubt they will differ that much, as they are very close to each other
but i will test this soon

1 Like

So i measured the temp on idle and this is interesting.
The e-cores are warmer than the p-cores while idle.

In the terminal at the top right. core 0,4,8,12 are the p-cores
16-23 are the e-cores

and they are 2 to 7°C warmer.

I was thinking why and when i looked up for a picture of the actual die(i couldn’t find the 1340p exactly but one from another raptorlake, they should be similar), the integrated gpu is exactly next to the e-cores and behind the ecore is the location of the p-cores. Sadly i can’t get the temperature of the gpu to see if this is the reason for the higher temp, but maybe?
Couldn’t explain this otherwise.

2 Likes

Thank you very much for this! Good to know that temps are not a good reason for disabling p cores.

2 Likes

Nice. I tagged this as a guide so others can test this if they like. :slight_smile:

3 Likes