为什么 CPU 频率会改变并且无法停止?

为什么 CPU 频率会改变并且无法停止?

我正在尝试禁用 CPU 频率调整并将处理器限制为单一速度。但似乎有什么东西在不断改变处理器速度。你知道为什么会发生这种情况吗?

我使用的是 16.04,处理器是 A10-7870K,我已从 BIOS 禁用频率缩放。我在机器上安装了 Windows 和 Ubuntu。CPU 没有过热,温度始终低于 50C。

在 Windows 中,CPU 频率固定为 3.2GHZ。但是当我启动 Linux 并检查时,/proc/cpuinfo我得到的值到处都是。

root@ubuntu:~# cat /proc/cpuinfo |grep MHz
cpu MHz         : 2483.111
cpu MHz         : 2511.828
cpu MHz         : 2142.128
cpu MHz         : 1850.386
root@ubuntu:~#

Cpufreq 模块未加载

root@ubuntu:~# lsmod |grep cpufreq
root@ubuntu:~#

似乎没有与 CPU 频率调整相关的设置

root@ubuntu:~# ls -al /sys/devices/system/cpu/cpufreq
total 0
drwxr-xr-x  2 root root 0 Sep 16 18:37 .
drwxr-xr-x 13 root root 0 Sep 16 18:37 ..
root@ubuntu:~# find /sys/devices/system/cpu |grep freq
/sys/devices/system/cpu/cpufreq
root@ubuntu:~# find /sys/devices/system/cpu |grep min
root@ubuntu:~# find /sys/devices/system/cpu |grep max
/sys/devices/system/cpu/kernel_max
root@ubuntu:~#

答案1

现代处理器(我的专长是 Intel,而不是 AMD)在负载足够轻时会自行降低 CPU 频率,即使在性能模式下也是如此,并且取决于 CPU 进入的空闲状态深度。我建议您使用 acpi-cpufreq CPU 频率调整驱动程序,并设置性能模式。然后您应该对该处理器有最大的响应能力。

可能还有其他方法,但我所知道的唯一将所有处理器 CPU 绝对锁定在最大频率的方法是禁用任何深度大于 0 的空闲状态,注意空闲状态 0 根本不是真正的空闲,而是满载轮询状态。

示例(虽然不是特别相关,但我的 CPU 频率调节驱动程序是 intel_ptsate,调节器是“性能”):

doug@s15:~/test_kernels$ sudo turbostat --quiet --Summary --show Busy%,Bzy_MHz,IRQ,PkgTmp,PkgWatt --interval 5
Busy%   Bzy_MHz IRQ     PkgTmp  PkgWatt
0.03    1749    283     47      4.04   <<< notice the low CPU frequency, even in performance mode. All Idle states are enabled.
0.02    1737    230     46      4.00
0.03    1920    552     45      4.07
0.02    1779    225     43      3.96
14.08   3498    5958    59      10.53
100.00  3500    40200   63      51.19   <<< Notice the high CPU frequency, but also high power consumption, and increasing package temperature.
100.00  3500    40189   64      51.67   <<< All idle states above 0 are disabled.
100.00  3500    40193   64      51.92   <<< turbostat sees idle state 0 as a "busy" state.
100.00  3500    40200   64      52.04
100.00  3500    40194   65      52.11
100.00  3500    40199   65      52.15
100.00  3500    40199   65      52.24
16.85   3497    7207    46      12.20
0.02    1777    230     45      3.98   <<< All idle states have been enabled again
0.02    1842    227     43      3.96
0.02    1833    224     42      3.94
0.02    1772    233     41      3.92
0.02    1769    249     40      3.91
0.03    1760    280     39      3.90
^C0.02  1922    77      39      3.88

注意:我的处理器是较旧的 i7,最小 pstate 为 16(1.6 GHz),最大 pstate(所有核心均处于活动状态)为 35(3.5 GHz)

相关内容