我在一台相当旧的笔记本电脑(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*/disable
。1
当我检查频率时:
$ 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 内核上可用,但内核参数的完整列表是这里。