Bentornati in questo settimo appuntamento con la nostra serie di articoli dedicati al tuning delle prestazioni di Linux.
Nella precedente lezione abbiamo mostrato come eliminare i font e i pacchetti delle localizzazioni non necessari cosi da velocizzare il boot ed i processi di upgrade in Ubuntu.
Il thermal throttling
Oggi invece ci focalizzeremo sulla gestione delle temperature e più precisamente sull'impostazione del clock del processore per prevenire surriscaldamenti e il fenomeno del thermal throttling, la funzione di depotenziamento automatico delle velocità della CPU che si attiva non appena vengono raggiunge determinate temperature all'interno dei componenti hardware del PC.
Come potete immaginare il throttling comporta un peggioramento delle prestazioni del computer che, per evitare di danneggiarsi per il troppo calore, si autolimita lavorando ad un ritmo minore rispetto ai valori standard.
Il surriscaldamento è un problema comune a tutti i terminali e i sistemi operativi moderni hanno implementato una serie di contromisure con cui evitare che il calore generato delle normali operazioni di calcolo comporti un arresto inatteso del sistema, con conseguente perdita di dati.
Più che un problema vero e proprio il thermal throttling è una strozzatura impostata dai produttori hardware che previene un danno concreto ai dispositivi.
Si tratta dunque di un comportamento pensato per segnalare all'utente che il PC ha raggiunto i suoi limiti tecnici e non è più in grado di dissipare il calore tramite gli heat pipe, le ventole o i sistemi di raffreddamento a liquido.
Nel dettaglio il thermal throttling è una tecnica di scaling dinamico della frequenza di clock del processore.
Una CPU moderna può operare normalmente anche ad una velocità di 4.00GHz, senza problemi. Tuttavia quando si vanno ad eseguire dei task molto intensi che durano diverso tempo, come ad esempio una sessione videoludica o il rendering di un video, le temperature del processore possono raggiungere in certi contesti anche i 90 o addirittura i 100 gradi celsius.
Questi situazione a lungo andare comporta appunto il deterioramento dell'hardware.
Fortunatamente su Ubuntu possiamo reperire diversi tool ed utility che ci consentono di impostare manualmente la frequenza di clock del processore in modo tale da evitare il thermal throttling o da ritardare sensibilmente la sua attivazione.
Inoltre è anche possibile modificare il comportamento delle ventole installate sul PC cosi da farle girare fin da subito al massimo della velocità, evitando il surriscaldamento e garantendo le prestazioni più elevate della CPU per tempi prolungati.
Ovviamente una maggiore velocità delle ventole comporta un aumento anche considerevole della rumorosità emessa dal dispositivo. Dunque prima di adottare tale strategia per raffreddare un computer è sempre bene considerare il livello di decibel che possono raggiungere i dispositivi di dissipazione durante la loro attività.
Come accennato, gli utenti di Ubuntu possono accedere ad un vasto ventaglio di applicativi per massimizzare le prestazioni e gestire le temperature.
I più gettonati sono lm-sensors, per controllare i sensori termici e regolare la velocità di rotazione delle ventole tramite la funzione funcontrol, e CPUFREQ, una utility per visualizzare ed impostare il clock della CPU.
Installare e configurare lm-sensors e fancontrol
Per visionare le temperature delle periferiche hardware, oltre che della CPU, su Ubuntu è possibile affidarsi ad un comodo tool da shell chiamato lm-sensors. Il suo utilizzo è davvero semplice, dunque anche l'utente alle prime armi con le distribuzioni Linux non avrà problemi di sorta.
Per installare lm-sensors basta utilizzare il package manager APT. Dunque rechiamoci nella sezione "Attività" presente in alto a sinistra del Desktop e digitiamo nella barra di ricerca la parola "Terminale".
Quindi selezioniamo l'icona nera per aprire bash, la shell di riferimento di Ubuntu, e all'interno della nuova finestra digitiamo:
sudo apt install lm-sensors fancontrol read-edit l2c-tools
Ultimato tale processo, che dovrebbe durare pochi minuti, testiamo il corretto funzionamento di lm-sensors tramite questo comando:
sudo sensors-detect
Rispondendo "yes" a tutte le domande si dovrebbe ottenere un output simile al seguente:
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +29.0°C (high = +76.0°C, crit = +100.0°C)
...
it8718-isa-0290
Adapter: ISA adapter
Vcc: +1.14 V (min = +0.00 V, max = +4.08 V)
VTT: +2.08 V (min = +0.00 V, max = +4.08 V)
+3.3V: +3.33 V (min = +0.00 V, max = +4.08 V)
NB Vcore: +0.03 V (min = +0.00 V, max = +4.08 V)
VDRAM: +2.13 V (min = +0.00 V, max = +4.08 V)
fan1: 690 RPM (min = 10 RPM)
temp1: +37.5°C (low = +129.5°C, high = +129.5°C) sensor = thermistor
temp2: +25.0°C (low = +127.0°C, high = +127.0°C) sensor = thermal diode
Ora possiamo installare un componente extra di lm-sensors, chiamato fancontrol-gui, che consente di interfacciarsi con esso tramite una comoda GUI. Dunque torniamo sul terminale e scriviamo tali comandi:
sudo apt install ca-certificates git build-essential cmake gcc g++ libkf5config-dev libkf5auth-dev libkf5package-dev libkf5declarative-dev libkf5coreaddons-dev libkf5dbusaddons-dev libkf5kcmutils-dev libkf5i18n-dev libkf5plasma-dev libqt5core5a libqt5widgets5 libqt5gui5 libqt5qml5 extra-cmake-modules qtbase5-dev libkf5notifications-dev qml-module-org-kde-kirigami2 qml-module-qtquick-dialogs qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel cmake build-essential gettext
git clone https://github.com/Maldela/fancontrol-gui.git
cd fancontrol-gui
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_KCM=on -DBUILD_PLASMOID=on
make -j
sudo make install
Ultimata l'installazione dell'interfaccia possiamo eseguire il tool per gestire le ventole del PC.
Torniamo quindi nella sezione "Attività" e cerchiamo l'applicazione "fancontrol". Clicchiamo quindi sull'icona corrispondente e verrà aperta l'utility per gestire la velocità delle ventole del computer.
Dalla finestra appena aperta cerchiamo la voce "Fans" per poter accedere a tutti i setting.
Da questa posizione possiamo impostare ad esempio le nostre ventole per girare al 100% della loro velocità non appena i sensori della scheda madre registrano una temperatura di 60 gradi.
Installare e configurare CPUFREQ
Oltre a regolare le ventole possiamo operare un controllo capillare della velocità del processore impostando un clock predefinito, in modo tale da prevenire il surriscaldamento e dunque gli eventi di thermal throttling.
Per eseguire tale impostazione ci si può affidare al programma chiamato CPUFREQ. Installarlo è davvero semplice, i suoi pacchetti si trovano infatti nei repository della distribuzione.
Torniamo nel terminale aperto poco prima e scriviamo tale comando:
sudo apt install indicator-cpufreq
Ora riavviamo Ubuntu ed in alto a destra sul Desktop dovremo trovare l'icona di una CPU stilizzata.
Cliccando su di essa si aprirà un menu con varie opzioni di clock della CPU. Ora si dovrà selezionare una voce tra quelle disponibili.
In base al device in nostro possesso queste possono variare, per fare un esempio, possiamo selezionare un valore come 3.50GHz o 3.00GHz oppure ancora 2.50GHz.
Prima di scegliere il nuovo livello di clock è meglio consultare il manuale del nostro processore cosi da orientarci verso un valore che consenta buone prestazioni senza rischiare di surriscaldare troppo il PC e dunque incappare nel throttling.