Rulez CentOS 7 (7.9.2009) (kernel 3.10.0-1160.49.1.el7.x86_64) pe un laptop destul de vechi (Lenove T61) cu un procesor dual core (CPU Intel(R) Core(TM)2 Duo) T7300 @ 2,00 GHz). Driverul pentru scalarea CPU este acpi-cpufreq, iar când este pe performanţă guvernator, pot face ca procesorul să funcționeze la viteza maximă a procesorului, așa cum este enumerată în /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq
, și observați acest lucru făcând:
$ grep -i mhz /proc/cpuinfo
CPU MHz: 2001.000
CPU MHz: 2001.000
și este constant la această viteză.
Pot verifica acest lucru făcând:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
2001000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
2001000
Încerc să rulez la o frecvență constantă pentru un program în timp real care numără ciclurile de ceas al procesorului pentru sincronizare. Am compilat un nucleu personalizat (5.10.83-rt58) pentru a suporta o bucată de hardware care nu este acceptată în nucleul implicit CentOS (3.10.0). Scalarea procesorului determină, de obicei, frecvența ceasului să sară, dar am descoperit că pot obține o frecvență constantă setând toate valorile în /sys/devices/system/cpu/cpu*/cpuidle/state*/disable
la 1
. Cand verific frecventa:
$ grep -i mhz /proc/cpuinfo
CPU MHz: 1995.106
CPU MHz: 1995.106
nu este chiar la 2001MHz așa cum se vede cu nucleul 3.10.0. Următoarea comandă verifică acest lucru:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1995106
Dar rezultatul:
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
2001000
e diferit. Întrebarea mea este: știe cineva de ce procesorul meu nu funcționează la frecvența maximă (2001MHz), dar la ~6MHz mai puțin? S-a schimbat ceva drastic în scalarea CPU între nucleul 3.10 și 5.10?