Normalmente la rete è piena di articoli riguardanti su come overcloccare una CPU per spremere il massimo delle prestazioni per il gaming. Negli ultimi anni i produttori hanno sfornato processori con clock sempre più elevati che hanno quindi esigenze a livello di alimentazione e raffreddamento notevoli.

Ora nel caso specifico che ho affrontato mi sono concentrato sui MiniPC (tipo ACE-MAGIC, Minisforum, Beelink) che a costi molto contenuti (inferiori ai 500€) offrono MiniPC dotati di processore AMD Ryzen™ 9 6900HX e acceleratore grafico AMD Radeon™ 680M e che offrono prestazioni dignitose nel gaming ed eccellenti negli altri scenari. Questi processori tendono però a scaldare parecchio: AMD sostiene possono operare fino a 95°, ma è pacifico che queste temperature abbiano un impatto sulla loro aspettativa di vita e che comunque rendano la vita difficile

Del resto utilizzando questa CPU per usi normali non è difficile vedere innalzare temporaneamente le temperature oltre i 75° in presenza di picchi, anche se solo per pochi secondi. La domanda è: a cosa mi servono frequenze così alte in caso di utilizzo a bassa intensità? Si certo il sistema è in grado di gestire autonomamente (tramite il cpu_governor) le frequenze ma è possibile intervenire per creare una “policy” ancor più conservativa, andando a impostare un limite sulla frequenza di picco quando il sistema sistema è in modalità “power-save”.

Ad esempio, nel caso di picco, la frequenza massima è stata 4,94Ghz secondo i limiti fissati da AMD. Via software, ed in modo temporaneo, è possibile impostare la gestione in “power-save”, limitando la frequenza di picco a 2,50Ghz. Per farlo…

…1 Script…

…che ha come scopo di impostare il sistema in modalità “power-save” e quello di limitare la frequenza di picco a 2,50Ghz. Andiamo dunque a scrivere

$ sudo vi /usr/local/bin/set_low_clock.sh

n.b. mettendo il file set_low_clock.sh nel path indicato sarà eseguibile indipendentemente dal path in cui viene richiamato.

#!/bin/bash

# Target max frequency (e.g., 2.5GHz = 2500000 kHz)
MAX_FREQ="2500000"

# Set the governor to 'powersave' for all CPUs
for cpu in /sys/devices/system/cpu/cpu[0-9]*; do
    echo "Setting powersave governor for $cpu"
    echo powersave > "$cpu/cpufreq/scaling_governor"
done

# Set the maximum frequency
for cpu in /sys/devices/system/cpu/cpu[0-9]*; do
    echo "Setting max freq to $MAX_FREQ for $cpu"
    echo "$MAX_FREQ" > "$cpu/cpufreq/scaling_max_freq"
done

echo "CPU frequency limit set to $((MAX_FREQ / 1000)) MHz"

Successivamente andiamo a dare i permessi di esecuzione al file.

$ sudo chmod +x /usr/local/bin/set_low_clock.sh

E di conseguenza potremo lanciarlo con il comando sudo set_low_clock.sh e avremo questo risultato:

Il risultato è facilmente verificabile in tempo reale con il comando

$ watch -n1 "grep 'cpu MHz' /proc/cpuinfo"
CPU in Idle
Durante uno stress test

che aprirà un terminale che ogni secondo si aggiorna con la frequenza effettiva di ogni singola CPU. Da notare che in Idle, con una temperatura ambientale di 27° C, la temperatura del processore si attesta sui 48° C. Durante lo stress test non ha mai superato i 62°C.

Rollback

Quando invece avrete bisogno della massima potenza del vostro processore, potrete sempre tornare alle impostazioni originali, tramite un’altro script

$ sudo vi /usr/local/bin/set_max_clock.sh

Il file sarà però un po’ diverso visto che, nell’ordine:

  1. leggerà la frequenza massima prevista dal costruttore
  2. Imposterà la cpu_governor in modalità “demand” o “performance” a seconda di quella supportata dal processore.
  3. Ripristinerà il valore di picco della CPU
#!/bin/bash

# Detect hardware maximum frequency (first CPU as reference)
MAX_FREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq)

if [ -z "$MAX_FREQ" ]; then
    echo "Unable to detect hardware max frequency. Exiting."
    exit 1
fi

# Set the governor to 'ondemand' or 'performance'
for cpu in /sys/devices/system/cpu/cpu[0-9]*; do
    echo "Restoring governor to 'ondemand' for $cpu"
    echo ondemand > "$cpu/cpufreq/scaling_governor" 2>/dev/null || \
    echo performance > "$cpu/cpufreq/scaling_governor"
done

# Set the max frequency to hardware max
for cpu in /sys/devices/system/cpu/cpu[0-9]*; do
    echo "Restoring max freq to $MAX_FREQ for $cpu"
    echo "$MAX_FREQ" > "$cpu/cpufreq/scaling_max_freq"
done

echo "CPU frequency limits reverted to $((MAX_FREQ / 1000)) MHz"

Successivamente andiamo a dare i permessi di esecuzione al file.

$ sudo chmod +x /usr/local/bin/set_max_clock.sh

E di conseguenza potremo lanciarlo con il comando sudo set_max_clock.sh e avremo questo risultato:

Il risultato è, di nuovo, facilmente verificabile in tempo reale con il comando

$ watch -n1 "grep 'cpu MHz' /proc/cpuinfo"
Stress test

Durante lo stress test la CPU ha raggiunto velocemente gli 85°C

Conclusioni

Con questi due script è possibile gestire in maniera ottimale le performance di un MiniPC o di Laptop. Volendo si può mettere lo script in crontab al reboot, in modo da far partire sempre il sistema in modalità UNDERCLOCK: perché ad ogni riavvio il sistema torna alle impostazioni originali.

Gli script sono stati testati su Debian 12, ma dovrebbero funzionare anche su Ubuntu 22.04 e derivate.

Categories:

No responses yet

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

I cookie sono file di testo che vengono temporaneamente memorizzati sul disco rigido del computer ogni volta che si visita un sito web. Quando si esplora il nostro sito alcune informazioni vengono acquisite automaticamente a fini statistici o informativi e consentono un miglior servizio. Le informazioni potrebbero permettere l’identificazione del visitatore.
Tra queste informazioni ci sono:

Questi dati sono anonimi e vengono elaborati e archiviati solo per fini statistici. Ci sono diversi tipi di Cookie, ognuno di essi segue il comportamento degli utenti per rendere l’esperienza complessiva più veloce, più facile e più efficiente. I cookie non possono danneggiare il tuo computer e non contengono informazioni personali o riservate.

Qui di seguito puoi trovare i tipi di cookie utilizzati sul nostro sito e perché li usiamo:

Analytics Cookies: questi cookie vengono utilizzati per misurare e analizzare come i clienti utilizzano il nostro sito web. Utilizziamo queste informazioni per migliorare la vostra esperienza sul nostro sito.

Altri cookie vengono utilizzati in forma automatica per fornire servizi quali, a titolo esemplificativo e non esaustivo, la risposta agli articoli scritti, l’invio di richieste di assistenza o informative. La maggioranza dei browser web accetta i cookie. Tuttavia si ha la possibilità di rifiutare i cookies modificando le impostazioni del tuo browser.

NOTA BENE: se si disabilitano si rischia di perdere alcune delle funzionalità di questo sito web.

Chiudi