Windows power plan settings explorer utility

Discussion in 'Operating Systems' started by mbk1969, Aug 3, 2017.

  1. EdKiefer

    EdKiefer Ancient Guru

    Messages:
    2,801
    Likes Received:
    318
    GPU:
    MSI 970 Gaming 4G
    Something doesn't sound right, while gaming the cores should be above low freq levels. Maybe it is game issue with low cpu% useage. You could try limiting game to x cores and see if it helps.

    On the min freq if you don't like the low 5% value there are two min state ones in power plan , the one with efficiency 1 at end, try 36% or around that, that gives me 1000mhz low but even on stock balanced none of my games stutter.

    Edit: this one
    Subgroup
    Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
    Minimum processor state for Processor Power Efficiency Class 1 (893dee8e-2bef-41e0-89c6-b55d0929964d)
    Description
    Specify the minimum performance state of your Processor Power Efficiency Class 1 processor (in percentage).
     
  2. X7007

    X7007 Ancient Guru

    Messages:
    1,758
    Likes Received:
    57
    GPU:
    Sapphire 6900XT
    I reseted the bios and it fixed the clocks, I will see if it fix the issue. Asrock has some mixed settings that can screw the Intel boosting if you even choose one settings to Enabled or Disabled and change it back it change other settings that I have no idea what they could be
     
  3. howiec

    howiec Member

    Messages:
    20
    Likes Received:
    4
    GPU:
    GTX 970 HOF
    Firstly, thanks to @mbk1969 for creating this very nifty program.

    Does anyone know if the program accepts any command line parameters to run saved profiles (exported .xml files, etc.)?
    I'd like to create shortcuts for different profiles to quickly apply certain changes within the same Windows power plan.

    There are some settings that I toggle between quite often and I'd rather not keep changing Windows power plans in case they affect other things tied to them.

    I guess I might be able to do it with a powercfg script or something too though.
     
    Last edited: Apr 10, 2022
  4. mbk1969

    mbk1969 Ancient Guru

    Messages:
    12,813
    Likes Received:
    11,021
    GPU:
    GF RTX 3060TI
    @howiec

    No command line parameters. But I am thinking to add a feature of creating bat-file with currently changed settings.
     

  5. howiec

    howiec Member

    Messages:
    20
    Likes Received:
    4
    GPU:
    GTX 970 HOF
    Great idea, cheers!
     
  6. mbk1969

    mbk1969 Ancient Guru

    Messages:
    12,813
    Likes Received:
    11,021
    GPU:
    GF RTX 3060TI
    @howiec

    http://www.mediafire.com/file/wt37sbsejk7iepm/PowerSettingsExplorer.zip
    MD5 hash for zip-file: B2156B11EF808C42C38B24B547693B15

    New button (in the lower left corner, next to "Apply") "Save changed settings as script...". It is enabled only when there are changed settings. When clicked app asks for a bat-file name and location and then saves changed settings to that file as a series of powercfg commands.

    Example of bat-file for two changed settings:
    Code:
    rem "none"\"Networking connectivity in Standby" @ "Balanced" = (AC: Managed by Windows)
    powercfg /setacvalueindex 381b4222-f694-41f0-9685-ff5bb260df2e fea3413e-7e05-4911-9a71-700331f1c294 f15576e8-98b7-4186-b944-eafa664402d9 2
    rem "none"\"Networking connectivity in Standby" @ "High performance" = (AC: Enable)
    powercfg /setacvalueindex 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c fea3413e-7e05-4911-9a71-700331f1c294 f15576e8-98b7-4186-b944-eafa664402d9 1
    rem "none"\"Networking connectivity in Standby" @ "Power saver" = (AC: Enable)
    powercfg /setacvalueindex a1841308-3541-4fab-bc81-f71556f20b4a fea3413e-7e05-4911-9a71-700331f1c294 f15576e8-98b7-4186-b944-eafa664402d9 1
    rem "Hard disk"\"AHCI Link Power Management - HIPM/DIPM" @ "Balanced" = (AC: Lowest)
    powercfg /setacvalueindex 381b4222-f694-41f0-9685-ff5bb260df2e 0012ee47-9041-4b5d-9b77-535fba8b1442 0b2d69d7-a2a1-449c-9680-f91c70521c60 4
    rem "Hard disk"\"AHCI Link Power Management - HIPM/DIPM" @ "High performance" = (AC: Active)
    powercfg /setacvalueindex 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c 0012ee47-9041-4b5d-9b77-535fba8b1442 0b2d69d7-a2a1-449c-9680-f91c70521c60 0
    rem "Hard disk"\"AHCI Link Power Management - HIPM/DIPM" @ "Power saver" = (AC: Lowest)
    powercfg /setacvalueindex a1841308-3541-4fab-bc81-f71556f20b4a 0012ee47-9041-4b5d-9b77-535fba8b1442 0b2d69d7-a2a1-449c-9680-f91c70521c60 4
    
    On laptops bat-file should contain commands for DC values too.
     
    Last edited: Apr 10, 2022
    howiec and Lite like this.
  7. mbk1969

    mbk1969 Ancient Guru

    Messages:
    12,813
    Likes Received:
    11,021
    GPU:
    GF RTX 3060TI
    howiec, The1, Lite and 1 other person like this.
  8. X7007

    X7007 Ancient Guru

    Messages:
    1,758
    Likes Received:
    57
    GPU:
    Sapphire 6900XT
  9. mbk1969

    mbk1969 Ancient Guru

    Messages:
    12,813
    Likes Received:
    11,021
    GPU:
    GF RTX 3060TI
    @X7007

    Are you sure you downloaded the zip-file with MD5 hash 3537CE1FAC9273604BC2573F65F923EE?

    Are you sure you clicked back to main (settings) grid after changing some value in lower one? Button "Apply" is enabled?

    [​IMG]
     
  10. mbk1969

    mbk1969 Ancient Guru

    Messages:
    12,813
    Likes Received:
    11,021
    GPU:
    GF RTX 3060TI
    It looks like powercfg.exe has new features in Win11, like:
     
    BuildeR2 likes this.

  11. neil78

    neil78 Member

    Messages:
    14
    Likes Received:
    5
    GPU:
    asus vega 64
    Is change this value helpful prevents audio device popping?

    [​IMG]

    73cde64d-d720-4bb2-a860-c755afe77ef2

    Thanks.
     
  12. mbk1969

    mbk1969 Ancient Guru

    Messages:
    12,813
    Likes Received:
    11,021
    GPU:
    GF RTX 3060TI
    I doubt. I have no clear understanding of this setting meaning - does it mean to route interrupts to CPU cores with load less than this setting or with load more than this setting?
    Also I am sure that this setting is relevant only with specific values of first setting in this subgroup - 2bfc24f9-5ea2-4801-8213-3dbae01aa39d.

    Audio popping can be investigated with this - https://forums.guru3d.com/threads/simple-way-to-trace-dpcs-and-isrs.423884/

    Also you have to be sure audio controller does not share its IRQ with another devices. Go to Device manager, switch view to "Resources by type", expand root node "Interrupt request (IRQ)" and check IRQ numbers.
     
    Last edited: May 9, 2022
    Pictus and EdKiefer like this.
  13. neil78

    neil78 Member

    Messages:
    14
    Likes Received:
    5
    GPU:
    asus vega 64
    Thanks.
    I found the new ASUS audio driver causes problems, so I uninstall it, and use old driver for replacement.

    And WIFI driver (Qualcomm Atheros QCA61x4A Wireless network adapter) also causes high DPC Latency problem.
    I use the new WIFI driver in Windows Update to test results, the DPC Latency problem almost solved.
     
  14. howiec

    howiec Member

    Messages:
    20
    Likes Received:
    4
    GPU:
    GTX 970 HOF
    BuildeR2 likes this.
  15. cookie

    cookie New Member

    Messages:
    1
    Likes Received:
    0
    GPU:
    RTX 3080 ti laptop
    I think this software is amazing! I've been trying so hard to copy your exact power plan piecing it together from comments you made. The only part I don't understand is the P-States.

    Code:
    ::Disable SpeedShift
    powercfg -setacvalueindex scheme_current sub_processor PERFAUTONOMOUS 0
    ::Disable P-States
    powercfg -setacvalueindex scheme_current sub_processor PROCTHROTTLEMIN 100
    powercfg -setacvalueindex scheme_current sub_processor PERFINCTHRESHOLD 0
    powercfg -setacvalueindex scheme_current sub_processor PERFDECTHRESHOLD 0
    ::Use C0 under load and revert to C3 when idle
    powercfg -setacvalueindex scheme_current sub_processor IDLEPROMOTE 98
    powercfg -setacvalueindex scheme_current sub_processor IDLEDEMOTE 98
    ::Set Turbo Boost to Aggressive At Guaranteed
    powercfg -setacvalueindex scheme_current sub_processor PERFBOOSTMODE 5
    powercfg -setacvalueindex scheme_current sub_processor PERFBOOSTPOL 100
    ::Disable Core Parking
    powercfg -setacvalueindex scheme_current sub_processor CPMINCORES 100
    This is what I've gotten so far but I wouldn't like P-States to always be at their highest what would you set it to for a balance of performance?
     

  16. mbk1969

    mbk1969 Ancient Guru

    Messages:
    12,813
    Likes Received:
    11,021
    GPU:
    GF RTX 3060TI
    As I take it CPU either uses Autonomous mode - new hardware P-states, or legacy P-states.
    Legacy P-states settings:
    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor performance increase threshold (06cadf0e-64ed-448a-8927-ce7bf90eb35d)
    Description
        Specify the upper busy threshold that must be met before increasing the processor's performance state (as a percentage).
    Range, Units
        0 .. 100 %
    
    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor performance decrease threshold (12a0ab44-fe28-4fa9-b3bd-4b64f44960a6)
    Description
        Specify the lower busy threshold that must be met before decreasing the processor's performance state (as a percentage).
    Range, Units
        0 .. 100 %
    
    - I set these two to the same value; I just monitor the frequencies (and load %) in Performance Monitor while starting usual apps - I want a bursts of frequencies when the load is increased over the these two thresholds and the lowest P-state when usage is lower than these thresholds.

    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor performance decrease policy (40fbefc7-2e9d-4d25-a185-0cfd8574bac6)
    Description
        Specify the algorithm used to select a new performance state when the ideal performance state is lower than the current performance state.
    Possible values
        Ideal - Select the ideal processor performance state.
        Single - Select the processor performance state one closer to ideal than the current processor performance state.
        Rocket - Select the lowest speed/power processor performance state.
    
    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor performance increase policy (465e1f50-b610-473a-ab58-00d1077dc418)
    Description
        Specify the algorithm used to select a new performance state when the ideal performance state is higher than the current performance state.
    Possible values
        Ideal - Select the ideal processor performance state.
        Single - Select the processor performance state one closer to ideal than the current processor performance state.
        Rocket - Select the highest speed/power processor performance state.
        IdealAggressive - Select the ideal processor performance state optimised for responsiveness
    
    - I set these two to "Ideal". These two settings can be used to create kinda hysteresis behaviour - to resist to increase or decrease of P-state.

    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor performance time check interval (4d2b0152-7d5c-498b-88e2-34345392a2c5)
    Description
        Specify the amount that must expire before processor performance states and parked cores may be re-evaluated (in milliseconds).
    Range, Units
        1 .. 5000 Milliseconds
    
    - I set this to 10 ms.

    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor performance history count (7d24baa7-0b84-480f-840c-1b0743c00f5f)
    Description
        Specify the number of processor performance time check intervals to use when calculating the average utility.
    Range, Units
        1 .. 128 Time check intervals
    
    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor performance increase time (984cf492-3bed-4488-a8f9-4286c97bf5aa)
    Description
        Specify the minimum number of performance check intervals since the last performance state change before the performance state may be increased.
    Range, Units
        1 .. 100 Time check intervals
    
    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor performance decrease time (d8edeb9b-95cf-4f95-a73c-b061973693c8)
    Description
        Specify the minimum number of performance check intervals since the last performance state change before the performance state may be decreased.
    Range, Units
        1 .. 100 Time check intervals
    
    - these 3 settings I do not touch. Last two can be used to create kinda hysteresis behaviour - to resist to increase or decrease of P-state.

    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor performance boost policy (45bcc044-d885-43e2-8605-ee0ec6e96b59)
    Description
        Specify by how much processors may opportunistically increase frequency above the maximum when allowed by current operating conditions.
    Range, Units
        0 .. 100 %
    
    - this I set to 100% - no point in restricting cores to boost for the balanced performance mode, IMO.


    New P-states settings:
    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor performance autonomous mode (8baa4a8a-14c6-4451-8e8b-14bdbd197537)
    Description
        Specify whether processors should autonomously determine their target performance state.
    Possible values
        Disabled - Determine target performance state using operating system algorithms.
        Enabled - Determine target performance state using autonomous selection.
    
    - my current home rig is always in autonomous mode.

    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor energy performance preference policy (36687f9e-e3a5-4dbf-b1dc-15eb381c6863)
    Description
        Specify how much processors should favour energy savings over performance when operating in autonomous mode.
    Range, Units
        0 .. 100 %
    
    - I set this to 0% - no point in restricting cores to boost for the balanced performance mode, IMO.

    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor autonomous activity window (cfeda3d0-7697-4566-a922-a9086cd49dfa)
    Description
        Specify the time period over which to observe processor utilisation when operating in autonomous mode.
    Range, Units
        0 .. 1270000000 Microseconds
    
    - this I set to 1ms.

    A setting relevant to both legacy and new P-states (turbo mode):
    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor performance boost mode (be337238-0d82-4146-a960-4f3749d470c7)
    Description
        Specify how processors select a target frequency when allowed to select above maximum frequency by current operating conditions.
    Possible values
        Disabled - Don't select target frequencies above maximum frequency.
        Enabled - Select target frequencies above maximum frequency.
        Aggressive - Always select the highest possible target frequency above nominal frequency.
        Efficient Enabled - Select target frequencies above maximum frequency if hardware supports doing so efficiently.
        Efficient Aggressive - Always select the highest possible target frequency above nominal frequency if hardware supports doing so efficiently.
        Aggressive At Guaranteed - Always select the highest possible target frequency above guaranteed frequency.
        Efficient Aggressive At Guaranteed - Always select the highest possible target frequency above guaranteed frequency if hardware supports doing so efficiently.
    
    - this I set to "Enabled" - no point in aggressive boost for the balanced performance mode.
     
    Last edited: Aug 10, 2022
  17. EdKiefer

    EdKiefer Ancient Guru

    Messages:
    2,801
    Likes Received:
    318
    GPU:
    MSI 970 Gaming 4G
    Processor autonomous activity window (cfeda3d0-7697-4566-a922-a9086cd49dfa)
    Description
    Specify the time period over which to observe processor utilisation when operating in autonomous mode.
    Range, Units
    0 .. 1270000000 Microseconds

    - this I set to 1ms.
    So the actual value you entered is 1000 microseconds?
     
  18. mbk1969

    mbk1969 Ancient Guru

    Messages:
    12,813
    Likes Received:
    11,021
    GPU:
    GF RTX 3060TI
    Yes.
    Also recently I noticed that this C-state setting
    Code:
    Subgroup
        Processor power management (54533251-82be-4824-96c1-47b60b740d00)
    Setting
        Processor idle time check (c4581c31-89ab-4597-8e2b-9c9cab440e6b)
    Description
        Specify the time that elapsed since the last idle state promotion or demotion before idle states may be promoted or demoted again (in microseconds).
    Range, Units
        1 .. 200000 Microseconds
    
    changed its units from milliseconds to microseconds. Whether it is Windows kernel related change or hardware C-states capability related change I don`t know.
     
  19. EdKiefer

    EdKiefer Ancient Guru

    Messages:
    2,801
    Likes Received:
    318
    GPU:
    MSI 970 Gaming 4G
    Processor autonomous activity window setting value of 1ms is like a 30x reduction, do you notice any difference, I am unclear what this setting really does.
     
  20. mbk1969

    mbk1969 Ancient Guru

    Messages:
    12,813
    Likes Received:
    11,021
    GPU:
    GF RTX 3060TI
    It is kinda polling rate - measure and calculate new P-state each 1ms (in my case).
    For hardware P-states it is done by CPU itself, so if I want more "dynamic" response to the usage change I lower that value.
    For legacy P-states it is done by OS kernel code, so I want it between 5-10 ms (to request CPU with P-state changes reasonably frequent).
     

Share This Page