HeteroIncreaseThreshold

HeteroIncreaseThreshold specifies the threshold value to cross above, which is required to unpark the Nth efficiency class 1 core. There is a separate value for each core index. The threshold is relative to efficiency class 0 performance. The provisioning interface can specify up to 4 different thresholds. If the system has 5 or more class 1 cores, the 4th value is used for all remaining cores of the same class.

Aliases and setting visibility

  • Windows provisioning: Common\Power\Policy\Definitions\Processor\HeteroIncreaseThreshold

  • Windows provisioning: Common\Power\Policy\Settings\Processor\HeteroIncreaseThreshold

  • PowerCfg: HETEROINCREASETHRESHOLD

  • Hidden setting: Yes

Values

  • Windows provisioning method

HeteroIncreaseThreshold needs to setup in two steps. First a definition needs to be setup for the threshold values. This is a four-byte unsigned integer where each byte represents a threshold in percentage. The lowest byte is the first threshold. For example, to set four thresholds—A, B, C, and D—the value of the parameter will be A + B*256 + C*65536 + D*16777216. This formula is applicable for provisioning package index values.

Minimum value

0 + 0*256 + 0*65536 + 0*16777216

Maximum value

100 + 100*256 + 100*65536 + 100*16777216

Step 1: These index values should be put in: Windows provisioning: Common\Power\Policy\Definitions\Processor\HeteroIncreaseThreshold

Example:

  • First class 1 core A threshold = 10%
  • Second class 1 core B threshold = 10%
  • Third class 1 core C threshold = 60%
  • Fourth class 1 core D threshold = 70%

Then Index Id = 0 is 10 + 10*256 + 60*65536 + 70*16777216 = 1178339850

Another index can be set for different threshold values A = 5%, B = 5%, C = 30%, and D = 35%

Index Id = 1 is 5 + 5*256 + 30*65536 + 35*16777216 = 589169925

In the above example the definition of 2 index can be set as follow is how various entry id can be set

        <Settings>
         <Power>
           <Policy>
             <Definitions>
               <Processor>
                 <HeteroIncreaseThreshold>
                   <List>
                     <Entry Id="0">
                       <!-- Set to 10 10 60 70 -->
                       <Value>1178339850</Value>
                     </Entry>
                     <Entry Id="1">
                       <!-- Set to 5 5 30 35 -->
                       <Value>589169925</Value>
                     </Entry>
                   </List>
                 </HeteroIncreaseThreshold>
               </Processor>
             </Definitions>

Index minimum value

0

Index maximum value

9

Step 2: These Index id need to be referenced in the other provisioning located at Windows provisioning: Common\Power\Policy\Settings\Processor\HeteroIncreaseThreshold

                       <HeteroIncreaseThreshold>
                         <AcValue>1</AcValue>
                         <DcValue>0</DcValue>
                       </HeteroIncreaseThreshold>

This means that for AC index id = 1 is selected. That entry id corresponds to 5,5,30,35% threshold for first 4 class 1 cores wheras for DC index id = 0 is selected and in above example that corresponds to 10,10,60,70% threshold value for first 4 class 1 cores.

  • Powercfg method Once Index has been populated via windows provisioning method then runtime these index can be changed with powercfg command line tool.

Example:

  • First class 1 core A threshold = 20%
  • Second class 1 core B threshold = 20%
  • Third class 1 core C threshold = 70%
  • Fourth class 1 core D threshold = 80%

To set four thresholds—A, B, C, and D—the value of the parameter will be D + C*256 + B*65536 + A*16777216. Note this formula is differnt than provisioning value. In this example the value that runtime can be override with powercfg for Index 0 = 80 + 70*256 + 20*65536 + 20*16777216 = 336,873,040. In hex this value is 0x14144650

These are the commands to override the index 0 with new thresholds via powercfg method

powercfg /SetPossibleValue SUB_PROCESSOR HETEROINCREASETHRESHOLD 0 BINARY 0x14144650

powercfg /setactive scheme_current

This way Index 0 have new threshold of 20,20,70,80% from first to last core respectively and HeteroIncreaseThreshold work on these new thresholds.

Applies to

Windows edition x86-based devices x64-based devices Arm-based devices
Windows 10 for desktop editions (Home, Pro, Enterprise, and Education) Supported Supported Supported
Windows 10 Mobile N/A N/A Supported
Windows 11 for desktop editions (Home, Pro, Enterprise, and Education) N/A Supported Supported