I was searching extensively regarding this and it appears I am not the only one facing this:
So, is this a bug in windows? I am on Windows 11 Home 22H2 22621.1702
In the above link, @Alexey_A1 provided a solution. It did not work for me but it brought me very close.
I did a study of the 'powercfg' command and the way @Alexey_A1 used 'PROCFREQMAX1' helped me figure out the solution:
Step1: Open command prompt as an administrator
Step2: Give command "powercfg /list"
OUTPUT:
Existing Power Schemes (* Active)
-----------------------------------
Power Scheme GUID: <here there will be a long ID> (Balanced) *
Step3: Give command "powercfg /DUPLICATESCHEME <the long ID you got in previous command goes here>"
OUTPUT:
Power Scheme GUID: <a new long ID> (Balanced)
Step4: Give command "powercfg /list". You can see the new duplicate power scheme
OUTPUT:
Existing Power Schemes (* Active)
-----------------------------------
Power Scheme GUID: <the new long ID> (Balanced)
Power Scheme GUID: <original long ID> (Balanced) *
Step5: Give command "powercfg /changename <the new long ID goes here> "Customized Power Saving" "
Step6 (For reducing CPU max clock speed of EFFICIENCY CORES when laptop NOT plugged into power):
Give command "powercfg /setdcvalueindex <the new long ID goes here> SUB_PROCESSOR PROCTHROTTLEMAX 60". Here '60' represents 60% of maximum allowed clock frequency of the Efficiency Cores. You can use any value <= 100, this will reduce power consumption and ALSO performance.
Step7 (For reducing CPU max clock speed of PERFORMANCE CORES when laptop NOT plugged into power):
Give command "powercfg /setdcvalueindex <the new long ID goes here> SUB_PROCESSOR PROCTHROTTLEMAX1 50". This reduces max clock frequency of Performance Cores to 50%. Note that for this command, it is 'PROCTHROTTLEMAX1' not 'PROCTHROTTLEMAX'
-------
Skip Step 8 and Step 9 if you don't want to reduce the max clock frequency (and reduce power consumption) when the laptop is plugged into power
-------
Step8 (For reducing CPU max clock speed of EFFICIENCY CORES when laptop is PLUGGED INTO power):
Give command "powercfg /setacvalueindex <the new long ID goes here> SUB_PROCESSOR PROCTHROTTLEMAX 60". Note that here it is 'setacvalueindex' and not 'setdcvalueindex'.
Step9 (For reducing CPU max clock speed of PERFORMANCE CORES when laptop PLUGGED INTO power):
Give command "powercfg /setacvalueindex <the new long ID goes here> SUB_PROCESSOR PROCTHROTTLEMAX1 50".
-------
Step 10: Give command "powercfg /setactive <the new long ID goes here> ". Do not forget this step.
Finally you can check your power consumption and P-core and E-core clock speeds using HWinfo software.
Here is the link to the 'powercfg' command guide for those who want to be clear what they are doing:
If you want to revert to normal settings and undo these changes just go to 'Power Options' in control panel and change to any other power scheme than the one we created right now ('Customized Power Saving' is the one we created with the above commands). You can also re-activate this customized power saving mode from 'Power Options' any time.
Hope this helps those who are seeking to squeeze out more battery life from their laptops with power hungry CPUs.
This also reduces overall CPU Temp, so those who previously had heating issues might not face it ever after this. Can you believe, during normal use, my i5 H series processor is at ~37C :) , and also it's average CPU core power consumption is ~4W! (It's a 45W TDP processor xD).
My battery life increased from 4hrs to 9hrs after this without impacting day to day usage (light to moderate) too much. In my opinion, Windows should make this setting available straight in the regular settings.
I believe this will also increase the life span of the processor and keep it working well for longer because this not just reduces clock speeds but also seems to in turn reduce average core voltage without having to undervolt (someone more knowledgeable than me can correct me on this if I am wrong).
It was painful to figure this out but worth it for my needs. I thought to share it with the community, so wrote this guide. This shouldn't have been so complicated to do. In my opinion, 'Max Processor State' option should have just worked for both E-cores AND P-cores.