msrtool、ThrottleStop、cpupower 如何控制 CPU 时钟?

msrtool、ThrottleStop、cpupower 如何控制 CPU 时钟?

我正在尝试控制笔记本电脑的时钟,并且使用 cpupower 取得了“一半成功”,我能够限制时钟,但是每当程序(或者更好的是 marios 程序)开始运行并要求更多的 CPU 时,系统就会忽略限制。

这样说好像它不起作用,但实际上当限制限制时 CPU 会在其中工作,但如果强制过度它也会忽略。

在 Windows 上我使用了 ThrottleStop,只有在出现“系统中断”时才会出现此问题,否则 CPU 始终在施加的限制内运行。

是否有人有解决方案可以让我限制时钟并且系统始终尊重这一点?

答案1

目前您正在使用 acpi-cpufreq CPU 频率调节驱动程序。此答案针对 intel_pstate CPU 频率调节驱动程序,建议您返回该驱动程序进行此工作。为什么?因为这样更简单。

虽然您的处理器是 i3-2328M,但本文的示例是 i7-2600K。

首先,检查你的限制:

$ grep . /sys/devices/system/cpu/intel_pstate/*
/sys/devices/system/cpu/intel_pstate/max_perf_pct:100
/sys/devices/system/cpu/intel_pstate/min_perf_pct:42
/sys/devices/system/cpu/intel_pstate/no_turbo:0
/sys/devices/system/cpu/intel_pstate/num_pstates:23
/sys/devices/system/cpu/intel_pstate/status:active
/sys/devices/system/cpu/intel_pstate/turbo_pct:18

现在假设我想将最大 CPU 频率限制为其功能的 60%:

echo 60 | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct

我将使用 turbostat 来演示:

sudo turbostat --Summary --quiet --show Busy%,Bzy_MHz,PkgTmp,PkgWatt,IRQ --interval 15
Busy%   Bzy_MHz IRQ     PkgTmp  PkgWatt
0.03    1606    844     26      3.69   <<< No load
0.80    3130    3492    26      4.50
3.91    3770    5791    39      9.53
12.52   3799    16078   41      22.84  <<< 100% load on one CPU
12.52   3799    16077   43      22.97
12.53   3309    16168   38      19.44
12.53   2300    16019   38      12.03  <<< Limit to 60% of max (to nearest P state)
12.53   2300    16069   37      12.03
12.53   2300    16007   38      12.03
100.00  2300    120463  43      33.79  << Increase load to all CPUs
100.00  2300    120467  44      33.81
12.53   2300    16045   38      12.04  << Decrease load back to only 1 CPU
12.53   2300    16053   38      12.04
3.34    2295    4756    31      5.95   <<< Load removed
0.03    1600    689     30      3.74
0.07    1816    885     33      3.76

相关内容