我想做一些微基准测试,并尝试做正确的事情。不幸的是,动态频率缩放使得基准测试非常不可靠。
有没有办法以编程方式(C++、Windows)查明是否启用了动态频率缩放?如果,可以在程序中禁用它吗?
我尝试在实际基准测试发生之前使用 100% CPU 的预热阶段,但事实证明这也不可靠。
UPDATE:即使我在 BIOS 中禁用 SpeedStep,cpu-z 显示频率在 1995 和 2826 GHz 之间变化
一般来说,您需要执行以下步骤:
Call CallNtPowerInformation()
并通过系统电源能力 to 信息层参数、设置lp输入缓冲区 and n输入缓冲区大小 to NULL
,然后设置lp输出缓冲区 to SYSTEM_POWER_CAPABILITIES结构,并设置n输出缓冲区大小到结构的尺寸。在第一次通话之后,SYSTEM_POWER_CAPABILITIES
包含当前系统电源能力的结构。要检查系统是否支持处理器限制,请读取以下值处理器节流阀.
我们对另外两名成员感兴趣,他们是,处理器最小节流 and 处理器最大油门;它们代表支持的系统处理器限制的最小和最大级别,以百分比表示。如果两个成员的值都已为 100%,则意味着 CPU 限制当前已禁用,因此您无需重新配置它。
要禁用 CPU 限制,您需要设置处理器最小节流 and 处理器最大油门 to 100%
。为此,请致电CallNtPowerInformation()
再次通过系统电源能力 to 信息层范围;但现在,设置lp输入缓冲区到 SYSTEM_POWER_CAPABILITIES 结构,其中两个成员已设置为100%
。我确信你知道下一步该做什么。
以非编程方式,您还可以获取/设置 Windows电源选项使用Windows内置的命令行工具,即PowerCfg.
进一步阅读
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)