如何透過規避 CPU 擴充來讓 CPU 以最大速度運作?

如何透過規避 CPU 擴充來讓 CPU 以最大速度運作?

我在一台相當舊的筆記型電腦(Lenove 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 核心上是否可用,但核心參數的完整列表是這裡

相關內容