.pow file is not reliable for deployment because it uses default values for unchanged settings. for example, when system A is HWP enabled in BIOS, it's autonomous mode default is enabled, when it exports its power plan to a system B, which is not HWP cable and autonomous mode default is disabled, the power plan will have autonomous mode disabled. .pow file don't use all the exact values you see on screen.
So its using only what a user changes, sounds like it then reads from HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes if that is so.
Right, only user changed settings are actually imported, other settings read default values that are already on the imported system.
@mbk1969 What was setting between minimum and maximum processor state that was used in bitsum powerplan? I dont see it anymore, is it because I had an older cpu back then? Now I see many settings but not that one
Not sure what you mean, Bitsum plan is based on a Windows HP plan (actually ultimate performance plan) so the processor state min/max are 100%, you should see those in PowerSettingExplorer utility.It also has core parking disabled and a few other powersaving settings disabled.
Did some test on QoS of processor power management, the entrylevelperf for unfocused visible window/medium QoS doesn't seem to work on Windows 10, background QoS might be the most useful one out of all those power profiles&QoS levels.
@mbk1969 Is there any way to trace whether current workload condition meets power setting thresholds?
I am actually looking for a way to determine the "concurrency count" and the time% spent with N processors. https://learn.microsoft.com/en-us/d...shold?view=trace-processor-dotnet-1.0#remarks
Good luck in finding documentation on how to use that. *** You can experiment with ETW providers. Like "Microsoft-Windows-Kernel-Processor-Power" one (you can query providers with command "logman query providers"). Execute command "wevtutil gp Microsoft-Windows-Kernel-Processor-Power /ge /gm" to view information about it: - tasks: Code: IdleStatesError PerfStatesError ThrottleStatesError Summary IdleStatesErrata PerfStatesErrata LongCapInfo QuickCapInfo DomainPerfStateChange ProcessorPerfStateChange PerfCheck RecordedUtility ExpectedUtility ParkCore UnparkCore IdleAccountingRundown ProcessorFirmwareRundown CStateDomainFirmwareRundown PTStateDomainFirmwareRundown ThrottleStatesErrata PccSummary PccErrata PccError NotifyPStates NotifyCStates NotifyTStates PerfStatesRundown BiosPStatesRundown BiosCStatesRundown BiosTStatesRundown PccCapChange BiosCapChange ThermalCapChange LogicalProcessorIdlingCorePark LogicalProcessorIdlingRundown LatencySensitivityHint ParkNodeRecordedStats CpcError PepGetIdleStates PepQueryCapabilities PepPerfConstraintChange PepPerfCapabilities ProcessorPerformanceRundown ParkNodeRundown ParkNodeCapChange Summary2 ProcessorIdleRundown ProcessorIdRundown PepGetPlatformIdleStates PlatformIdleAccountingRundown PlatformParkingPreference LowPowerScenarioChange LowPowerScenarioRundown LowPowerScenarioInformationRundown PepGetIdleStatesV2 PepGetIdleStatesV2Rundown PepGetPlatformIdleState PepGetPlatformIdleStateRundown DripsAccountingSnapshot PlatformAccountingBucketIntervalsRundown PlatformIdleVetoIncrement PlatformIdleVetoDecrement ProcessorIdleVetoIncrement ProcessorIdleVetoDecrement PlatformIdleVetoRundown ProcessorIdleVetoRundown StaticPolicyRundown PerfSelectProcessorState VetoNameRundown PepGetCoordinatedIdleStates PepGetCoordinatedIdleStatesRundown PepGetCoordinatedDependency PepGetCoordinatedDependencyRundown MediaBufferingNotify ComputeEnergy CoordinatedIdleRundown HeteroResponse HeteroDistributeUtility ProfileRegistered ProfileRundown ProfileChange ProfileSettingChange ProfileSettingRundown ProfileStatusRundown ProfileEnabled ProfileDisabled IdleDurationExpiration DeliveredPerfChange ParkSelection ProcessorEnergyCounter PackageEnergyCounter ProcessorPreVetoAccountingRundown PlatformPreVetoAccountingRundown NotifyCpcHighest ProcessorClassUpdate HeterogeneousPoliciesChanged HeterogeneousPoliciesRundown AutonomousModeChange ProcessorLpiStatesRundown ProcessorContainerLpiStatesRundown VirtualHeterogeneityRundown VirtualHeterogeneitySupportChanged QosSupportRundown QosSupportChanged PepPerfDomainInfo PepPerfDomainInfoRundown HgsUpdate ParkNodeClassRecordedStats ParkNodeParkHintChange HiddenProcessorPerfRundown HiddenProcessorBiosCapChange HiddenProcessorThermalCapChange PerfStatesDegraded SoftParkSelection SoftParkStateChange RecordedUtilityHv PerfSelectProcessorStateHv DeliveredPerfChangeHv ExpectedUtilityHv AutonomousModeChangeHv ProcessorPerfStateChangeHv BiosCapChangeHv ThermalCapChangeHv ProcessorPerformanceRundownHv PerfDomainRundown Summary2Hv SummaryHv QuickCapInfoHv LongCapInfoHv ProcessorFirmwareRundownHv PerfStatesRundownHv BiosPStatesRundownHv BiosCStatesRundownHv BiosTStatesRundownHv IdleStatesErrorHv PerfStatesErrorHv ThrottleStatesErrorHv PccErrorHv CpcErrorHv NotifyPStatesHv NotifyCStatesHv NotifyTStatesHv NotifyCpcHighestHv PccCapChangeHv ProcessorLpiStatesRundownHv - keywords: Code: Perf Diag PowerDiagnostics Lpi SleepStudy Algorithm Profiles PerfDiag EnergyEstimation Try to launch the ETW trace session: Code: logman create trace ProcessorPower -p Microsoft-Windows-Kernel-Processor-Power -ets -o c:\temp\processorpower.etl then do what actions you want to test. Then stop the session Code: logman stop ProcessorPower -ets Then change the folder to c:\temp Code: cd c:\temp and create reports Code: tracerpt "processorpower.etl" -o -report -summary -lr Then open created file "dumpfile.xml" in notepad++... PS Example of events from that "dumpfile.xml": Code: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System>...</System> <EventData> <Data Name="Group">0</Data> <Data Name="Affinity">0xFFF</Data> <Data Name="ConcurrentCores">4</Data> <Data Name="HistogramSize"> 13</Data> <Data Name="ConcurrencyHistogram">103154422081</Data> <Data Name="ConcurrencyHistogram">35747450798</Data> <Data Name="ConcurrencyHistogram">10390620337</Data> <Data Name="ConcurrencyHistogram">4572279436</Data> <Data Name="ConcurrencyHistogram">2274363091</Data> <Data Name="ConcurrencyHistogram">1283289890</Data> <Data Name="ConcurrencyHistogram">1005175527</Data> <Data Name="ConcurrencyHistogram">417972470</Data> <Data Name="ConcurrencyHistogram">393562321</Data> <Data Name="ConcurrencyHistogram">222227769</Data> <Data Name="ConcurrencyHistogram">140784658</Data> <Data Name="ConcurrencyHistogram">110026939</Data> <Data Name="ConcurrencyHistogram">478257026</Data> <Data Name="DistributeCores">2</Data> </EventData> <RenderingInfo Culture="ru-RU"> <Level>Verbose </Level> <Opcode>Info </Opcode> <Keywords> <Keyword>Diag</Keyword> </Keywords> <Task>ParkNodeRecordedStats</Task> <Provider>Microsoft-Windows-Kernel-Processor-Power </Provider> </RenderingInfo> </Event> Code: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System>...</System> <EventData> <Data Name="PpmCheckTime">160151864775</Data> <Data Name="IdleTime">434478</Data> <Data Name="BusyTime">33520</Data> <Data Name="Frequency"> 33</Data> <Data Name="Group">0</Data> <Data Name="Number">0</Data> <Data Name="DeliveredPerformance"> 33</Data> <Data Name="Utility">236</Data> <Data Name="AffinitizedUtility">217</Data> <Data Name="FrequencySensitivity">100</Data> <Data Name="BufferingPercent">0</Data> <Data Name="StallTime">0</Data> </EventData> <RenderingInfo Culture="ru-RU"> <Level>Verbose </Level> <Opcode>Info </Opcode> <Keywords> <Keyword>Diag</Keyword> </Keywords> <Task>RecordedUtility</Task> <Provider>Microsoft-Windows-Kernel-Processor-Power </Provider> </RenderingInfo> </Event> Code: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System>...</System> <EventData> <Data Name="ProfileId">1</Data> </EventData> <RenderingInfo Culture="ru-RU"> <Level>Information </Level> <Opcode>Info </Opcode> <Keywords> <Keyword>Algorithm</Keyword> <Keyword>Profiles</Keyword> </Keywords> <Task>ProfileEnabled</Task> <Provider>Microsoft-Windows-Kernel-Processor-Power </Provider> </RenderingInfo> </Event> Code: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System>...</System> <EventData> <Data Name="State">0x7F002E22</Data> <Data Name="Speed"> 3504</Data> <Data Name="Group">0</Data> <Data Name="Number">8</Data> <Data Name="Performance"> 131</Data> <Data Name="TolerancePercent"> 100</Data> <Data Name="MinPercent"> 99</Data> <Data Name="MaxPercent"> 131</Data> <Data Name="EppPercent"> 50</Data> <Data Name="ActivityWindow"> 0</Data> <Data Name="Autonomous">true</Data> <Data Name="Initiated">true</Data> <Data Name="QosClass"> 0</Data> </EventData> <RenderingInfo Culture="ru-RU"> <Level>Information </Level> <Opcode>Info </Opcode> <Keywords> <Keyword>Perf</Keyword> </Keywords> <Task>ProcessorPerfStateChange</Task> <Provider>Microsoft-Windows-Kernel-Processor-Power </Provider> </RenderingInfo> </Event> Code: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System>...</System> <EventData> <Data Name="Group">0</Data> <Data Name="Number">4</Data> <Data Name="DeliveredPerformance"> 40</Data> <Data Name="DurationInUs">46853</Data> <Data Name="DeliveredFrequency"> 40</Data> </EventData> <RenderingInfo Culture="ru-RU"> <Level>Information </Level> <Opcode>Info </Opcode> <Keywords> <Keyword>PerfDiag</Keyword> </Keywords> <Task>DeliveredPerfChange</Task> <Provider>Microsoft-Windows-Kernel-Processor-Power </Provider> </RenderingInfo> </Event>
Other than the concurrency count, I also find traces on latency sensitivity hints and medium QoS. They do exist but their effects were never observed as described.
@Donduck As I take it Code: <Data Name="Group">0</Data> <Data Name="Number">0</Data> in events refer to the CPU core - group # core #
And I guess Code: <Data Name="HistogramSize"> 13</Data> <Data Name="ConcurrencyHistogram">103154422081</Data> <Data Name="ConcurrencyHistogram">35747450798</Data> <Data Name="ConcurrencyHistogram">10390620337</Data> <Data Name="ConcurrencyHistogram">4572279436</Data> <Data Name="ConcurrencyHistogram">2274363091</Data> <Data Name="ConcurrencyHistogram">1283289890</Data> <Data Name="ConcurrencyHistogram">1005175527</Data> <Data Name="ConcurrencyHistogram">417972470</Data> <Data Name="ConcurrencyHistogram">393562321</Data> <Data Name="ConcurrencyHistogram">222227769</Data> <Data Name="ConcurrencyHistogram">140784658</Data> <Data Name="ConcurrencyHistogram">110026939</Data> <Data Name="ConcurrencyHistogram">478257026</Data> means 1 histogram for the whole CPU plus histogram for each core. Probably you can test by summing lower histogram datas and see whether the sum is equal to the highest one.
@Donduck If you open created etl-file in Windows Performance Analyzer you will see "Core Parking Concurrency" section/data Upd.: I guess the column "Weighted Avg" on the right side of details shows the busy cores at each moment (one line).