为什么 CPU 频率在负载下比空闲时低?

为什么 CPU 频率在负载下比空闲时低?

我有一台新的 Ubuntu 18.04 服务器,运行 i9-9900KF CPU,我想用它来做一些繁重的计算。由于它有 16 个线程,我把所有 16 个线程都改为/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor性能模式,并停止了按需服务,这样sudo systemctl disable ondemand它在重启后就会卡住(确实如此)。

结果令人费解。在更改之前(在省电调节器下),空闲时频率为 800MHz(如scaling_min_freq值所预期),负载下频率为 4700 MHz(scaling_max_freq值为5000000)。

更改后,空闲频率如预期一样为 5000MHz,但在负载下,它又是 4700MHz……?因此,在负载下,调速器设置是什么并不重要,但在性能调速器下,空闲频率甚至更高。

这可能是什么原因造成的?我的电源应该能达到 600W,而且我只有主板、双风扇水冷器、M2 SSD 和 4 风扇机箱(所以我不认为电源在这里是个问题……?)。

答案1

通常,最大 CPU 时钟频率取决于活跃核心的数量。

使用 turbostat(linux-tools-common 包)读取并解码 MSR_TURBO_RATIO_LIMIT 寄存器。示例(已编辑,4 核处理器):

$ sudo turbostat
...
cpu3: MSR_TURBO_RATIO_LIMIT: 0x23242526
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
36 * 100.0 = 3600.0 MHz max turbo 3 active cores
37 * 100.0 = 3700.0 MHz max turbo 2 active cores
38 * 100.0 = 3800.0 MHz max turbo 1 active cores
...

注意:您的处理器相当新,我不知道 turbostat 的发行版是否知道这一点。我很确定上游版本知道。

根据评论,温度现在可能是一个问题。要观察,请尝试以下操作:

doug@s15:~$ sudo turbostat --quiet --Summary --show Busy%,Bzy_MHz,PkgTmp,PkgWatt,GFXWatt,IRQ --interval 15
Busy%   Bzy_MHz IRQ     PkgTmp  PkgWatt GFXWatt
0.03    1600    767     26      3.70    0.12
0.04    1600    778     26      3.70    0.12
0.06    1627    1138    25      3.71    0.12
37.28   3495    45585   47      23.90   0.12  <<< Load applied
100.00  3500    120635  53      58.51   0.12  <<< Observe CPU freq pinned at 4 core limit
100.00  3500    120604  57      59.28   0.12  <<< Observe processor package temperature rising
100.00  3500    120598  62      59.96   0.12
100.00  3500    120646  65      60.96   0.12
100.00  3500    120603  69      61.53   0.12
100.00  3500    120603  70      61.88   0.12
100.00  3500    120643  71      62.17   0.12
100.00  3500    120634  71      62.35   0.12
100.00  3500    120615  72      62.52   0.12
100.00  3500    120683  73      62.66   0.12
100.00  3500    120656  74      62.86   0.12
100.00  3500    120630  75      62.97   0.12
100.00  3500    120623  75      63.04   0.12
100.00  3500    120616  76      63.14   0.12

答案2

我认为这是由于温度引起的,这称为节流,它由系统(通常是操作系统或 BIOS)执行,以防止对 CPU 造成损害。要判断这是否是由于节流引起的,您需要查看(或最好绘制图表)CPU 温度和 CPU 频率,如果您发现频率随着温度升高而降低,那么这就是节流。

动态频率调节(也称为 CPU 节流)是计算机架构中的一项技术,可以根据实际需要“动态”自动调整微处理器的频率,以节省电力和减少芯片产生的热量

也可以看看:https://en.wikipedia.org/wiki/Dynamic_frequency_scaling

相关内容