I guess majority of MS clients either do not bother with power management optimized for performance or do customize power management themselves. I suspect default settings are shifted toward power economy. Also too many HW platforms to optimize for.
MS has added some new power settings for heterogeneous architecture cpu to their documents, but not present in Windows 11 yet. The names do not correspond to the names in registry. They are available here: https://docs.microsoft.com/en-us/wi.../configure-processor-power-management-options Below are the significant ones ModuleUnparkPolicy: specify unpark policy for cores sharing the same l2 chche. Since e-cores share l2, it would be for e-cores only. But I seriously doubt the necessity of parking e-cores because they are way more efficient than p-cores. ComplexUnparkPolicy: specify unpark policy for cores sharing the same l3 cache. it might imply there will be cpu having cores with separate l3? SmtUnparkPolicy: specify unpark policy for Smt threads. You can then choose the priority of unparking physical cores or smt. HeteroIncreaseThreshold1 & HeteroDecreaseThreshold1: specify thresholds to park&unpark class 2 cores. It seems to be for Intel's even-smaller e-cores later on, and there could be more than 5 of them. ShortThreadRuntimeThreshold: This one is now present in Windows 11, it specifies how long is short threads or long threads so that different threads could be run on different processor class. I.e. you can force long threads running on e-cores and sudden loads running on p-cores using SchedulingPolicy & ShortSchedulingPolicy to achieve better battery life with fewer lags, since alder lake requires at least 1 unparked p-core, that's convenient. I am still thinking how to find that magic number of thread runtime so that Windows could distribute loads more accurately. LongThreadArchClassLowerThreshold & LongThreadArchClassUpperThreshold & ShortThreadArchClassLowerThreshold & ShortThreadArchClassUpperThreshold: The 4 settings specify the lower&upper limit number of cores in the same processor class running short&long thread. It seems to be an easier way to limit cores than specifying percentages for core parking because you can just specify how many cores to use. Percentage is sometimes confusing when 100% cannot be fully divided by the number of threads, and the same percentage works differently on cpus with different number of cores.
The thing is that laptops with alder lake cpu have poor battery life, and customers are enraged when they see apple m1's superior power efficiency. At least Microsoft and OEMs could have use more aggressive power saving settings by default on every laptop types except gaming ones, or they could just unhide all the settings they have been hiding since Vista.
Would be nice if Windows changed power settings depending on platform - laptop desktop. Also would be nice to provide a wizard for tuning the power plans further.
There actually is a phone company, whose alder lake laptop achieves double battery life than traditional computer companies, even though it did not beat 6800u laptops. The trick is to do smartphone-ish power management on laptops, keep a relatively low value of "Processor performance boost policy" and change the settings so that p-state&c-state can switch as quick as possible (which is also what I did on my laptop). And they have a pre-installed software, I suspect it could detect what users are doing and switch from multiple power plans automatically (I know there is privacy issue, but it seems to improves battery life a lot). The real pain is that MS and OEMs hide the power settings, and the default values are too high in terms of power consumption. Most people only knows to lower the upper bound of p-state because it is unhidden in control panel, and that doesn't really help.
@mbk1969 btw, I have some questions in power management settings: 1: Processor idle state maximum (9943e905-9a30-4ec1-9b99-44dd3b76f7a2) has values from 0 to 20, but a blog by MS engineer (https://devblogs.microsoft.com/sustainable-software/tuning-servers-for-energy-savings) says the max value is 14, and setting to 0 means no restriction for how deep the idle state goes. I only know intel cpu has c8 or down to c10, ryzen cpu has cc6, but never find out where do idle state 20 or 14 come from. 2: Heterogeneous policy in effect (7f2f5cfa-f10c-4823-b5e1-e93ae85f46b5) has 5 options, and no where can I find explaination. 3: There is an option for Processor duty cycling (4e4450b3-6179-4e91-b8f1-5bb9938f81a1), I know duty cycling was first introduced on skylake, but why is it off by default? Does it have any flaws so that MS doesn't want to enable it? Ryzen's cc6 sleep works similarly to duty cycling, does this option affects ryzen? I have read some reddit posts saying cc6 is how ryzen does power management, does it mean ryzen already has duty cycling when autonomous mode is on? The most important thing: does it really save power as advertised? 4: This is the most confusing one. Processor performance time check interval (4d2b0152-7d5c-498b-88e2-34345392a2c5) was already in place in Windows 7, and min value can be 1ms. But 1ms control was also first introduced on skylake, and it has to be hardware-controlled. How did MS did the 1ms time interval in 2009 before skylake was released in 2015? Or is it just a mistake, any value lower than 15ms will be interpreted as 15ms? High-performance plan and ultimate-performance plan set it to 15ms, which makes sense because 15ms is OS's timer resolution. ps: I see core VID goes down when core parking is disabled, then I get why it is disabled by default after Windows 7, it really is a feature for servers, don't expect it could save power for laptops.
Maybe server platforms have deeper C-states. Neither do I. Found at Intel forums: It definitely can save power. Since not every CPU on the market supports that duty cycling I guess MS left it off by default. OS kernel does not have to use timers to measure the time check interval. It can check the lapsed timespan in code circle. For hardware controlled time check interval I see microseconds instead of milliseconds.
In fact a e3 1200v5 datasheet says xeon also has c-state down to c8. Here's the link: https://www.intel.com/content/dam/w...datasheets/xeon-e3-1200v5-vol-1-datasheet.pdf It is all policy 4 on my Windows 10 + 8th gen laptop, and all policy 0 on alder lake + Windows 11. I don't get it. Does it mean the clock signal will only wake cores by a fraction of time under duty cycling? Correct me if I am wrong, cores are turning on and off because of the clock, doesn't that requires higher p-states and higher voltages, by induction? It is like, there are 100 tasks, cpu could either spend 10s finishing 10 tasks every second, or 20 tasks every second and take a rest in the other second, the latter one is higher p-state&voltage. Is it Processor autonomous activity window (cfeda3d0-7697-4566-a922-a9086cd49dfa)? I had mistaken the unit as milliseconds until today, adding 3 zeros instantly made some positive effects.
On newer CPU does some of the C and P stat stuff need a reboot to work? I edited idle promote/demote and the autonomous activity window but did not seeing any changes in HWinfo64. My old system 3570k worked real good with idle promote/demote, no need to reboot. This is on a 12600k, ASUS TUF Z690 wifi D4 MB.
No need to reboot. Are you sure you look for correct info there? Are you sure autonomous mode is used?
It is not about waking the core. It is about that clock - https://www.intel.com/content/www/us/en/gaming/resources/cpu-clock-speed.html 3 power plan values for time intervals - for P-states, for C-states and for autonomous activity window. First two were originally in milliseconds. Now I see them in microseconds.
I am looking at C2, C0, C6, C7 in HWinfo64 and autonomous mode is enabled. If there is a better way to view it, test let me know. My C7 is always high 90's no matter power plan at idle.
Yeah, I know, on this system it doesn't seem to change much changing these settings , C0 is always very low untill I run something hrad. Might be something with Alder-lake on Win10, either way its running great so I guess I will leave it alone. other settings work fine like with min/max performance and anything parking/unpark. There are settings for E cores and P cores though.
That`s the purpose of high idle promote/demote - CPU sits in C6 (deep) idle state until something is started and CPU jumps to C0 (no idle state). With low idle promote/demote even high CPU usage will not switch CPU to C0 constantly.
Could duty cycling cause higher dpc latency? It is weird that it's not enabled for years, compatibility should not be an issue because MS and intel can easily recognize hardware info while users doing system update or driver installations.