In quanto dipendente dalle prestazioni web, sono sempre alla ricerca di modi per migliorare le prestazioni del sistema e velocizzare le applicazioni web. E oggi condividerò con te la magia del ridimensionamento della frequenza della CPU e una guida pratica per disabilitare il ridimensionamento della frequenza della CPU per far funzionare il tuo sistema alla massima velocità della CPU.
Prima di approfondire come disabilitare il ridimensionamento della frequenza della CPU, cerchiamo di capire cos'è il throttling della CPU.
Cos'è il ridimensionamento della frequenza della CPU?
Da Kernel v. 2.6.18 (CentOS) e 2.6.32 (Ubuntu), è stata introdotta una nuova funzionalità chiamata Dynamic CPU frequency scaling (aka CPU throttling).
Questo ridimensionamento della frequenza della CPU consente a un processore di funzionare a una frequenza inferiore a quella massima consentita. Questo viene fatto solo per preservare il consumo energetico, ma lo svantaggio è che non sei in grado di utilizzare tutta la velocità della tua CPU.
Come posso trovare a quale velocità è in esecuzione la mia CPU?
Esegui questo comando, come vedi di seguito:
grep -E '^model name|^cpu MHz' /proc/cpuinfo
L'output dovrebbe essere simile a questo:
[[email protected]:~]grep -E '^model name|^cpu MHz' /proc/cpuinfo model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000
Come puoi vedere, la velocità della CPU originale è @ 3,40 Ghz, tuttavia la velocità della CPU in esecuzione in Mhz è di circa 1600. La CPU funziona a metà della sua velocità totale.
Questo può essere ottenuto anche con un fantastico pacchetto CPU chiamato cpufrequutils / cpupoweruitls
Installa cpupowerutils su CentOS/Debian
yum install cpupowerutils -y
Installa cpupowerutils su Ubuntu/Debian
apt-get install cpufrequtils
Ora esegui questo comando e ti mostrerà informazioni sulla velocità minima e massima della CPU, tra gli altri dettagli:
cpupower frequency-info
L'output previsto dovrebbe essere simile a questo:
[[email protected]:~]cpupower frequency-info analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 1.60 GHz - 3.80 GHz available cpufreq governors: performance powersave current policy: frequency should be within 1.60 GHz and 3.80 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: 1.60 GHz (asserted by call to hardware) boost state support: Supported: yes Active: yes 3600 MHz max turbo 4 active cores 3700 MHz max turbo 3 active cores 3800 MHz max turbo 2 active cores 3800 MHz max turbo 1 active cores
Disabilita il ridimensionamento della frequenza della CPU su Linux (RedHat e Ubuntu)
Vediamo come disabilitare il ridimensionamento della frequenza della CPU sulle piattaforme Linux più popolari.
Per utenti CentOS/RHEL
Modifichiamo la frequenza della cpu alla velocità massima disponibile con il seguente comando:
cpupower frequency-set -g performance
Vediamo se c'è di nuovo qualche cambiamento nella velocità di esecuzione della CPU:
[[email protected]:~]grep -E '^model name|^cpu MHz' /proc/cpuinfo model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3497.218 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3392.296 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3397.742 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 2283.578 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3457.640 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 2133.234 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.257 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3740.265 [[email protected]:~]
Come puoi vedere nel comando precedente, ora la CPU funziona più in alto di prima quando è necessario.
Un altro modo per farlo manualmente è eseguire questo comando che cambierà il regolatore della CPU dalla modalità "ondemand" alla modalità "prestazioni" per tutte le tue CPU:
for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do [ -f $CPUFREQ ] || continue; echo -n performance > $CPUFREQ; done
Se il tuo sistema esegue uno qualsiasi dei demoni che controllano la velocità della CPU, interrompili semplicemente per far funzionare il tuo sistema alla massima velocità della CPU:cpuspeed, cpufreqd o powerd.
service cpuspeed stop
Per utenti Ubuntu/Debian
Modifica questo file e, se non esiste, crealo:
nano -w /etc/default/cpufrequtils
Aggiungi la seguente riga all'interno:
GOVERNOR="performance"
Salva premendo CTRL + X, quindi premi Y.
Passaggio successivo:disabilita il demone ondemand per evitare di perdere le modifiche dopo aver riavviato il server, esegui questo comando:
update-rc.d ondemand disable
È tutto. Controlla di nuovo le tue impostazioni con questo comando:
cpufreq-info
Conclusione
L'esecuzione della CPU alla massima velocità può davvero aumentare le prestazioni delle tue applicazioni. La maggior parte delle CPU moderne dispone già di ottimi sistemi di raffreddamento della CPU, quindi questo non dovrebbe essere un problema, tuttavia assicurati che ciò non causi un enorme consumo di energia extra o il surriscaldamento della CPU. Come puoi vedere, puoi disabilitare facilmente il ridimensionamento della frequenza della CPU sia per le distribuzioni basate su RedHat che su Debian. Fateci sapere se avete problemi o domande al riguardo.
Ulteriori letture:
- Ridimensionamento della frequenza della CPU in Linux con cpufreq
- Documenti per il ridimensionamento della frequenza della CPU di ArchLinux
- Documentazione RedHat CPUFreq Governors