il nuovo amd_pstate per gestire le CPU AMD

 

Grazie al Kernel Linux 5.17, i processori AMD più recenti, cioè Zen2 (Ryzen 3xxx) e Zen3 (Ryzen 5xxx), possono contare su un nuovo CPU Frequency Scaler che si chiama amd_pstate e si pone come alternativa al default acpi_cpufreq.

La gestione energetica delle CPU è basata su un driver automaticamente abilitato dal kernel; uno scaling governors e uno scaling delle frequenze di cui parleremo in questo articolo.
Il driver può essere personalizzato con un userspace tool quale cpupower, thermald, ecc. Io uso cpupower. È con questo tool che possiamo impostare il limite di frequenza minimo e massimo della nosta CPU, altrimenti il kernel li assegna a modo suo (per lo più in modo corretto!)
Lo scaling governors viene impostato automaticamente dalla distribuzione (in genere Ondemand) ma può essere variato manualmente, io uso schedutil per risparmiare o performance se devo fare editing video, rendering o simili.
Il CPU Frequency Scaler fa variare la frequenza di funzionamento da un minimo (con risparmio di energia e minima temperatura) ad un massimo (la frequenza base della CPU con in più il turbo boost), in questo caso si aumenta la performance a scapito di energia e temperatura.
Il funzionamento è semplice: vengono creati dei Pstate a varie frequenze, il kernel sceglie la più bassa e poi, a seconda delle richieste che arrivano passa da un Pstate ad un altro in modo da ottimizzare le performance. Nel mio Ryzen 3700X, utilizzando schedutil e acpi-cpufreq avevo 3 Pstate:

P0 = 3600MHz (la frequenza di base della CPU)
P1 = 2800MHz
P2 = 2200MHz

Il boost non ha un Pstate assegnato, ma generlamente è attivo di default e si gestisce da se.

Nel passare da una frequenza all’altra c’è sempre un certo ritardo che diminuisce le prestazioni, ma nella maggior parte dei casi non è importante.
Il nuovo amd_pstate gestisce meglio le frequenze aumentando il numero dei Pstates (che quindi hanno un minore intervallo di frequenze nel passare da uno all’altro). Nel mio caso si parte da un minimo di 500MHz fino al massimo consentito dal turbo boost (4430MHz). Una bella differenza rispetto a prima, con un consumo e una temperatura sensibilmente minori. Penso che ci si avvicini all’efficenza dei processori Intel, con il loro intel_pstate. Le prestazioni però mi sembrano leggermente calate a causa dei continui e numerosi salti di frequenze ognuno con un certo lag. La differenza non è molta perché i lag, anche se sono di più, sono di valore minore a causa del minor salto di frequenze. Se ci servono prestazioni si può sempre passare al governors performance che fissa la frequenza a quella base più quelle di boost, senza mai scendere a valori minori.

Ma vediamo ora come abilitare il nuovo Frequency Scaler. Il kernel usa come default il vecchio e stabile acpi_cpufreq, quindi dobbiamo prima mascherare questo modulo e poi attivare quello nuovo:

# nano /etc/modprobe.d/blacklist.conf

e vi si scrive dentro:

# mask acpi-cpufreq  module
blacklist acpi-cpufreq

Poi si aggiunge il parametro del kernel a Grub o ad altro boot loader. Per Grub io faccio:

# nano /etc/default/grub

e alla linea:

GRUB_CMDLINE_LINUX_DEFAULT=”loglevel=3 …”

Aggiungo la voce:

amd_pstate.shared_mem=1

Salvare. Infine si riaggiorna il grub con il metodo usato dalla vostra distro; per Arch è il comando:

# grub-mkconfig -o /boot/grub/grub.cfg
# reboot

Ecco fatto, avete il nuovo amd_pstate e potrete vantarvi di aiutare l’ambiente con un miglior risparmio energetico!

Source: il nuovo amd_pstate per gestire le CPU AMD

Ti potrebbe interessare anche...