如何通过绕过 CPU 缩放来使我的 CPU 以最大速度运行?

如何通过绕过 CPU 缩放来使我的 CPU 以最大速度运行?

我在一台相当旧的笔记本电脑(Lenovo T61)上运行 CentOS 7(7.9.2009)(内核 3.10.0-1160.49.1.el7.x86_64),该笔记本电脑配有双核 CPU(Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz)。CPU 扩展的驱动程序是 acpi-cpufreq,当表现调速器,我可以让 CPU 以所列的最大 CPU 速度运行/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq,并通过执行以下操作来观察:

$ grep -i mhz /proc/cpuinfo 
cpu MHz     : 2001.000
cpu MHz     : 2001.000

在这个速度下,它非常稳定。我可以通过以下方式验证这一点:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
2001000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq 
2001000

我正在尝试以恒定频率运行一个实时程序,该程序计算 CPU 时钟周期以进行计时。我编译了一个自定义内核 (5.10.83-rt58) 来支持默认 CentOS 内核 (3.10.0) 不支持的硬件。CPU 缩放通常会导致时钟频率跳动,但我发现可以通过将所有值设置为来获得稳定的频率/sys/devices/system/cpu/cpu*/cpuidle/state*/disable1当我检查频率时:

$ grep -i mhz /proc/cpuinfo 
cpu MHz     : 1995.106
cpu MHz     : 1995.106

它没有达到 3.10.0 内核中看到的 2001MHz。以下命令验证了这一点:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1995106

但输出:

$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
2001000

是不同的。我的问题是,有人知道为什么我的 CPU 没有以最大频率(2001MHz)运行,而是低了约 6MHz?内核 3.10 和 5.10 之间的 CPU 扩展是否发生了重大变化?

答案1

我发现添加内核参数nohz_full=1 rcu_nocbs=1 mitigations=off能够让我的一个内核在内核 5.10.83-rt58 上以 2001MHz 的速度运行。请记住,添加mitigations=off将禁用 CPU 漏洞缓解措施。我不确定这些参数是否在 3.10.0-1160.49.1.el7.x86_64 内核上可用,但内核参数的完整列表是这里

相关内容