First of all, thanks for thinking with me! Yes, thanks I know that. Ryzen 5 2600 has 3 P-States: with max set at 100% it uses the max available state (<=3.4GHz), and by setting it to 99% it's forced to use the state below (<=2.8GHz, and it's enough for me); the next (and last) percentage value is 81% (~ <=1.6GHz). Thanks, I didn't know that. Although I noticed that Ryzen-balanced plan turns off core parking. Hmm, I'll play with it then. OK, but only for "performance increase policy" not "performance decrease policy" (the latter works the other way around). That's what I thought, thanks for the confirmation. Hmm, although I don't think this works this way. Increase threshold: "Specify the upper busy threshold that must be met before increasing the processor's performance state (in percentage)." Decrease threshold: "Specify the lower busy threshold that must be met before decreasing the processor's performance state (in percentage)." The defaults for these 2 in % are (e.g. diff between HighPerf plan is only 20): - increase: Saver: 90, Balanced: 60, High: 30, Ryzen: 25, mine: 80 - decrease: Saver: 60, Balanced: 20, High+Ryzen: 10, mine: 40 This is how it works (at least how I understand it): - increase: a given state has to reach the specified utilisation to be allowed to enter a higher state - decrease: a given state has to drop down to the specified utilisation to be allowed to enter a lower state Thanks for mentioning, I left out this one for whatever reason. That is I wanted to achieve with my settings (apart from the idle check), I used: - 30ms for "performance time check interval" - 2 perf checks for "performance increase time": meaning 2*30 = 60ms - 1 perf checks for "performance decrease time": meaning 1*30 = 30ms At least this is how I understand how it works (I can be wrong with this one).
You can test that yourself. Download this archive http://www.mediafire.com/file/drkkxqeiyiafafq/pwrtest.zip/file It contains two versions of PwrTest - test utility from Windows Driver Kit - for Win7 and for Win10 (17134). Execute in elevated command prompt: Code: pwrtest.exe /info:ppm /p:1 > ppm.txt - that will create report file "ppm.txt" with both P-states and C-states supported by CPU. Here is the report for CPU in one of my work rigs: Spoiler Code: InstanceName: ACPI\GenuineIntel_-_Intel64_Family_6_Model_76_-_______Intel(R)_Celeron(R)_CPU__J3160__@_1.60GHz\_2_0 Processor Performance States PerfStates: Max Transition Latency: 10 us Number of States: 24 State Speed (Mhz) Type ----- ------------ ---- 0 1601 (100%) Performance 1 1600 ( 99%) Performance 2 1520 ( 94%) Performance 3 1440 ( 89%) Performance 4 1360 ( 84%) Performance 5 1280 ( 79%) Performance 6 1200 ( 74%) Performance 7 1120 ( 69%) Performance 8 1040 ( 64%) Performance 9 960 ( 59%) Performance 10 880 ( 54%) Performance 11 800 ( 49%) Performance 12 720 ( 44%) Performance 13 640 ( 39%) Performance 14 560 ( 34%) Performance 15 480 ( 29%) Performance 16 480 ( 29%) Throttle 17 422 ( 26%) Throttle 18 360 ( 22%) Throttle 19 302 ( 18%) Throttle 20 240 ( 14%) Throttle 21 182 ( 11%) Throttle 22 120 ( 7%) Throttle 23 62 ( 3%) Throttle InstanceName: PPM_Processor_1 Kernel Idle States: (3 states) TargetState: 0 Type: 0 TargetProcessors: 0x2 State 0: Latency: 1 us Power: 1000 mWatts TimeCheck: 500000 QPC ticks (50 ms) PromotePercent: 95% DemotePercent: 95% StateType: C1 IdleHandler: Present Context: NOTPresent State 1: Latency: 500 us Power: 10 mWatts TimeCheck: 500000 QPC ticks (50 ms) PromotePercent: 95% DemotePercent: 95% StateType: C2 IdleHandler: Present Context: NOTPresent State 2: Latency: 1000 us Power: 10 mWatts TimeCheck: 500000 QPC ticks (50 ms) PromotePercent: 95% DemotePercent: 95% StateType: C3 IdleHandler: Present Context: NOTPresent Here is the command line syntax for PwrTest And if you want your CPU to be a bit more lazy you raise the decrease treshold to switch to lower P-states more quickly.
Good article on C-states, P-states and the stuff https://metebalci.com/blog/a-minimu...f-cpu-power-management-c-states-and-p-states/
Can you upload it one more time? I couldn't download it yesterday evening, it says "Upload is still in progress..." for whatever reason. Thanks!
Mediafire acts strange lately, not the first time it gives me the link which results in "Upload is still in progress..." http://www.mediafire.com/file/drkkxqeiyiafafq/pwrtest.zip/file
Thanks for the article, it was interesting. Ryzen 5 2600 has only C1 and C2 states (Promote/Demote Percent are with Ryzen Balanced plan), I knew the rest: Spoiler ;; pwrtest.exe /infopm /p:1 > ppm.txt InstanceName: ACPI\AuthenticAMD_-_AMD64_Family_23_Model_8_-_AMD_Ryzen_5_2600_Six-Core_Processor____________\_2_0 Processor Performance States PerfStates: Max Transition Latency: 0 us Number of States: 3 State Speed (Mhz) Type ----- ------------ ---- 0 3400 (100%) Performance 1 2800 ( 82%) Performance 2 1550 ( 45%) Performance InstanceName: PPM_Processor_1 Kernel Idle States: (2 states) TargetState: 1 Type: 0 TargetProcessors: 0x2 State 0: Latency: 1 us Power: 0 mWatts TimeCheck: 165704 QPC ticks (50 ms) PromotePercent: 40% DemotePercent: 26% StateType: C1 IdleHandler: Present Context: NOTPresent State 1: Latency: 400 us Power: 0 mWatts TimeCheck: 165704 QPC ticks (50 ms) PromotePercent: 40% DemotePercent: 26% StateType: C2 IdleHandler: Present Context: NOTPresent
There is one confusion regarding two idle settings. Microsoft offers a document about processor power management and there we read: Now if you look to descriptions in power plan settings: See the difference? In document they talk about "The amount of processor idleness" while in actual settings about "Specify the busy threshold". And busy is related to idle: busy = 100% - idle. I tested these settings and if I set both demote and promote tresholds to 95% meaning "95% of idle" I see that CPU uses all C-states under the load, while if I set tresholds to 5% meaning "5% of busy" I see that CPU uses only one deepest C-state under the load. You can test it yourself with the help of perfmon.exe. I will demonstrate this with screenshots...
Promote and demote tresholds = 95%: PC at idle PC at load Promote and demote tresholds = 5%: PC at Idle PC at load When tresholds are set tp 95% we see that all 3 C-states are used even under the load. But with tresholds set to 5% lightest C-states are not used even under the load. PS That makes me to believe that the description from the document is closer to truth, because 28% of idle equals to 72% of busy but we see core 0 in deepest C-state despite the treshold for demoting set to 5% of busy (supposedly).
Pictures are not visible for me Edit: sorry, it's working, it was caused by Brave browser (ads are disabled).
You're absolutely right, thanks for mentioning! I haven't noticed this, although my previously posted values are fine (see below). The whole logic is reversed compare to the "performance threshold" values: Code: - goes "up": "performance increase threshold" and "idle demote threshold" - goes "down": "performance decrease threshold" and "idle promote threshold" Exactly! Good find! Here are the default % values used by the PowerSaver, Balanced and HighPerformance plans for comparison (we can clearly see the reversed logic used by "idle threshold"): Code: - Processor performance increase threshold: Saver: 90, Balanced: 60, High: 30 - Processor performance decrease threshold: Saver: 60, Balanced: 20, High: 10 - Processor idle demote threshold: Saver: 20, Balanced: 40, High: 40 - Processor idle promote threshold: Saver: 40, Balanced: 60, High: 60 So this translates to the "busy threshold" values like this (busy = 100% - idle, as you said), and now it makes more sense when we compare them to "performance threshold" values: Code: - Processor idle demote threshold: Saver: 80, Balanced: 60, High: 60 - Processor idle promote threshold: Saver: 60, Balanced: 40, High: 40 So these translate to the "busy threshold" values like this: Code: - Processor idle demote threshold: "95%": 5, "5%": 95 - Processor idle promote threshold: "95%": 5, "5%": 95 As we see, using "95% of idle" ("busy threshold": 5) the CPU can switch C-states even quicker than HighPerformance plan, while using "5% of idle" ("busy threshold": 95) the CPU becomes more lazier than PowerSaver plan: that's why it uses mainly the lowest Cx state (C3) for you. Btw, all the power plans use 50ms for time check interval for these settings (it seems that there's no number-of-perf-check values for these): "Processor idle time check". My settings for these are (between PowerSaver and Balanced (HighPerformance is the same as Balanced)): Code: - Processor idle demote threshold: 30 ("busy threshold": 70) - Processor idle promote threshold: 50 ("busy threshold": 50) PS: I haven't played with core-parking yet, I'll try it out next. Oh, and a small "feature" request: can you make the app to remember the previous state of its window (position and size)? Now it always starts as maximized. Thanks!
Yep, that was correct, thanks for the above word document: I just tried out disabling core-parking as well: I don't see any difference (temperature is the same), thanks for mentioning! At least I don't have to deal with bunch of other options The doc says: So it doesn't matter for this CPU, since it only has 2 Cx states. And here are my modified settings for Ryzen 5 2600 (after copying the Balanced plan) using only passive cooling (undervolted CPU and turbo is off in UEFI): Code: fea3413a-7e05-4911-9a71-700331f1c294 - Require a password on wakeup: No Hard disk: - AHCI Link power Management - HIPM/DIPM: HIPM+DIPM - Turn off hard disk after: 0 Sleep: - Sleep after: 0 - System unattended sleep timeout: 0 (Defaults: All: 120; returns back to sleep after 120 seconds after waking unattended: e.g. after wakeup alarms, WOL, etc.) - Allow hybrid sleep: Off - Hibernate after: 0 - Allow standby states: On - Allow wake timers: Enable Power buttons and lid: - Power Button action: Sleep Display: - Dim display after: 0 - Turn off display after: 3600 - Adaptive backlight: None - Enable adaptive brightness: Off Multimedia settings: - When playing video: Optimize video quality PCI Express: - Link State Power Management: Max power savings Processor power management: - System cooling policy: Passive (Defaults: All: Active) - Minimum processor state: 5 (Defaults (%): Saver+Balanced:5, Ryzen: 90, High: 100) - Maximum processor state: 99 (Defaults (%): Saver:75, Balanced+Ryzen+High: 100) - Processor performance increase policy: Ideal (Defaults: Saver: Single, Balanced+Ryzen: Ideal, High: Rocket) - Processor performance decrease policy: Ideal (Defaults: Saver: Rocket, Balanced+Ryzen: Ideal, High: Single) - Processor performance time check interval: 30 (Defaults (ms): Saver: 200, Balanced: 30, High+Ryzen: 15) - Processor performance increase time: 2 (=60ms) (Defaults (perf check): Saver: 3 (=600ms), Rest: 1(B=30ms, R=15ms)) - Processor performance decrease time: 1 (=30ms) (Defaults (perf check): All: 1 (S=200ms, B=30ms, R=15ms)) - Processor performance increase threshold: 80 (Defaults (%): Saver: 90, Balanced: 60, High: 30, Ryzen: 25) - Processor performance decrease threshold: 40 (Defaults (%): Saver: 60, Balanced: 20, High+Ryzen: 10) - Processor idle demote threshold: 30 (Defaults (%): Saver: 20(=80), Rest: 40(=60), Ryzen: 26?) (goes "up" to lighter idle; reversed logic: this is the amount of idleness!!!: busy = 100% - idle) - Processor idle promote threshold: 50 (Defaults (%): Saver: 40(=60), Rest: 60(=40), Ryzen: 40?) (goes "down" to deeper idle; reversed logic: this is the amount of idleness!!!: busy = 100% - idle) - Processor performance core parking min cores: 100 (Defaults (%): High+Ryzen: 100, Rest: 10) (value 100 disables core parking functionality) The last part relates to CPU settings and with these I managed to gain ~3C compared to Balanced plan and ~6C compared to Ryzen plan (that was set by default after installing the driver) during light usage. Adding another ~6C to the above due to undervolting, the total gain is at least ~12C. I also copied this plan and just modified the "Maximum processor state" to 100, if I want to encode/compile something quickly. A small hint for others how to list/copy/rename/delete plans: Spoiler powercfg /L powercfg /DUPLICATESCHEME 4ae4e159-1a2e-4510-881f-9ddf11f596df powercfg /CHANGENAME 4ae4e159-1a2e-4510-881f-9ddf11f596df chros099 powercfg /DELETE 4ae4e159-1a2e-4510-881f-9ddf11f596df So, thank You one more time for this amazing utility! For example the "Require a password on wakeup" setting was also hidden in Enterprise version, and I already tried to set it in 3 other different ways and it still didn't work! No, I have an 1080p screen. The "problem" is that it starts maximized, then I want to see my notes in notepad++, so I "restore" the window and it has a default size that I don't like, so I have to resize it again. But it's not really important if it gives you lot of work.
Are you aware of <Win>+<Left Arrow> or <Win>+<Right Arrow> to align two apps in left and right sides of the screen? No lot of work, but most of programmers are lazy. If you insist I can do that, but if you have never tried the above method to split a screen between two apps it can be the solution.
I noticed 1 more thing by accident that we missed before: the 2 "idle threshold" % values are dependent on the set max "Maximum processor state" % value by default! It's not an issue, but can be confusing when looking at the Cx values in the output of: Code: pwrtest.exe /info:ppm /p:1 There's a setting that responsible for this: "Processor Idle Threshold Scaling" (from the linked doc and there's no such setting for "performance threshold" values). If it's enabled (it is by default) then it recalculates the % values based on the "Maximum processor state" value, e.g. if we set in the plan: Code: - Processor idle promote threshold: 50 - Processor idle demote threshold: 30 then the final values look like this: Code: - Maximum processor state: 100 - Processor idle promote threshold: 50 - Processor idle demote threshold: 30 - Maximum processor state: 99 - Processor idle promote threshold: 33 - Processor idle demote threshold: 20 - Maximum processor state: 80 - Processor idle promote threshold: 10 - Processor idle demote threshold: 6 So I added 2 more settings to my notes: Code: - Processor performance boost mode: Disabled (Defaults: All: Agressive) - Processor idle threshold scaling: Enable (Defaults: All: Enable) (If it's enabled then the 2 "idle threshold" % values are dependent on the set max "Maximum processor state" % value!) Btw, there was 1 more setting the was useful for me (I already set ti via registry, but it's easier to set with your tool): "Hard disk - AHCI Link power Management - HIPM/DIPM" (default is "HIPM"): - the new Crucial mx500 500GB m.2 sata3 sdd got really hot during usage (~80C) and it turned out that setting this to "HIPM+DIPM" lowers its temp with ~20C! I know about it but never used it Of course I don't insist It's fine as it is, maybe if you modify something in the future and still remember this request then you can include it. Thanks!
I will tease dear gurus - I started to work on new tool related to power plans, power events. ETA is April.
I accept your tease, Ancient Guru. I still use several of your tools to this day, on multiple computers.
You made me notice the amount of messages and I am in shock - 6700 messages! Even if each message took 1 minute to compose, I spent 111 hours only writing messages - that`s 4 and a half days non-stop.