How to disable dynamic frequency scaling?

I would like to make some micro libraries and try to do them correctly. Unfortunately, dynamic frequency scaling makes benchmarking very unreliable.

Is there any way programmatically (C ++, Windows) to find out if dynamic frequency scaling is enabled? If, can it be disabled in the program?

Ive tried to just use the warm-up phase, which uses a 100% processor per second before the actual test, but it also turned out to be unreliable.

UPDATE . Even when I turn off SpeedStep in the BIOS, cpu-z shows that the frequency changes between 1995 and 2826 GHz

+3
source share
2

, :

  • CallNtPowerInformation() SystemPowerCapabilities InformationLevel, lpInputBuffer nInputBufferSize NULL, lpOutputBuffer SYSTEM_POWER_CAPABILITIES nOutputBufferSize . SYSTEM_POWER_CAPABILITIES, . , , ProcessorThrottle.

  • , : ProcessorMinThrottle ProcessorMaxThrottle; , . 100%, , , .

  • , ProcessorMinThrottle ProcessorMaxThrottle 100%. CallNtPowerInformation() SystemPowerCapabilities InformationLevel; lpInputBuffer SYSTEM_POWER_CAPABILITIES, 100%. , , .

/ Windows Windows, PowerCfg.

+8

Windows XP . , Windows?

- SpeedSwitchXP, .

, , CallNtPowerInformation.

0

Source: https://habr.com/ru/post/1770465/


All Articles