我有一台新的 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