Wie kann ich meine CPU mit Maximalgeschwindigkeit laufen lassen, indem ich die CPU-Skalierung umgehe?

Wie kann ich meine CPU mit Maximalgeschwindigkeit laufen lassen, indem ich die CPU-Skalierung umgehe?

Ich verwende CentOS 7 (7.9.2009) (Kernel 3.10.0-1160.49.1.el7.x86_64) auf einem ziemlich alten Laptop (Lenove T61) mit einer Dual-Core-CPU (Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz). Der Treiber für die CPU-Skalierung ist acpi-cpufreq, und wenn ich auf demLeistungGovernor kann ich die CPU dazu bringen, mit der in aufgeführten maximalen CPU-Geschwindigkeit zu laufen /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq, und dies wie folgt beobachten:

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

und es ist bei dieser Geschwindigkeit absolut stabil. Ich kann dies folgendermaßen überprüfen:

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

Ich versuche, ein Echtzeitprogramm, das CPU-Taktzyklen zur Zeitmessung zählt, mit konstanter Frequenz laufen zu lassen. Ich habe einen benutzerdefinierten Kernel (5.10.83-rt58) kompiliert, um eine Hardware zu unterstützen, die im Standard-CentOS-Kernel (3.10.0) nicht unterstützt wird. Die CPU-Skalierung führt normalerweise dazu, dass die Taktfrequenz springt, aber ich habe festgestellt, dass ich eine konstante Frequenz erreichen kann, indem ich alle Werte auf setze /sys/devices/system/cpu/cpu*/cpuidle/state*/disable. 1Wenn ich die Frequenz überprüfe:

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

es liegt nicht ganz bei den 2001 MHz, die beim Kernel 3.10.0 zu sehen sind. Der folgende Befehl überprüft dies:

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

Aber die Ausgabe von:

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

ist anders. Meine Frage ist, ob jemand weiß, warum meine CPU nicht mit der maximalen Frequenz (2001 MHz) läuft, sondern mit ~6 MHz weniger? Hat sich zwischen Kernel 3.10 und 5.10 etwas drastisch an der CPU-Skalierung geändert?

Antwort1

Ich habe festgestellt, dass das Hinzufügen der Kernelparameter nohz_full=1 rcu_nocbs=1 mitigations=offdazu führte, dass einer meiner Kernel mit 2001 MHz auf Kernel 5.10.83-rt58 lief. Bedenken Sie, dass durch das Hinzufügen mitigations=offdie Milderung von CPU-Schwachstellen deaktiviert wird. Ich bin nicht sicher, ob diese Parameter auf dem Kernel 3.10.0-1160.49.1.el7.x86_64 verfügbar waren, aber die vollständige Liste der Kernelparameter istHier.

verwandte Informationen