Prestazioni del Raspberry Pi: aggiungiamo ZRAM e modifichiamo i parametri del kernel

Un paio di settimane fa ho pubblicato una recensione del Pinebook Pro. Poiché anche Raspberry Pi 4 è basato su ARM, alcune delle ottimizzazioni menzionate nell'articolo precedente si adattano bene. Vorrei condividere questi trucchi e vedere se anche a voi si presenteranno simili miglioramenti delle prestazioni.

Dopo aver installato Raspberry Pi nel mio server domestico , ho notato che nei momenti di carenza di memoria RAM diventava molto poco reattiva e persino si bloccava. Per risolvere questo problema, ho aggiunto ZRAM e apportato alcune modifiche ai parametri del kernel.

Attivazione di ZRAM su Raspberry Pi

Prestazioni del Raspberry Pi: aggiungiamo ZRAM e modifichiamo i parametri del kernel

ZRAM crea nella memoria RAM uno storage a blocchi chiamato /dev/zram0 (o 1, 2, 3, ecc.). Le pagine scritte qui vengono compresse e conservate in memoria. Ciò consente di garantire un input/output molto veloce e libera memoria attraverso la compressione.

Raspberry Pi 4 è disponibile con 1, 2, 4 o 8 GB di memoria RAM. Utilizzerò il modello da 1 GB, quindi correttore l'istruzione in base al tuo modello. Con 1 GB, il file di swap predefinito (lento!) verrà utilizzato meno frequentemente. Ho usato uno script zram-swap per installare e configurare automaticamente.

Le istruzioni sono nel repository al link sopra. Installazione:

git clone https://github.com/foundObjects/zram-swap.git
cd zram-swap && sudo ./install.sh

Se desideri modificare la configurazione:

vi /etc/default/zram-swap

Inoltre, puoi attivare ZRAM installando zram-tools. Se utilizzi questo metodo, assicurati di modificare la configurazione nel file /etc/default/zramswap, e imposta circa 1 GB di ZRAM:

sudo apt install zram-tools

Dopo l'installazione puoi visualizzare le statistiche dello storage ZRAM con il seguente comando:

sudo cat /proc/swaps
Filename				Type		Size	Used	Priority
/var/swap                               file		102396	0	-2
/dev/zram0                              partition	1185368	265472	5
pi@raspberrypi:~ $

Aggiungiamo i parametri del kernel per un migliore utilizzo di ZRAM

Ora correggiamo il comportamento del sistema quando Raspberry Pi passa a swap all'ultimo momento, il che spesso porta a bloccaggi. Aggiungiamo alcune righe nel file /etc/sysctl.conf e riavviamo.

Queste righe 1) ritarderanno l'inevitabile esaurimento della memoria, aumentando la pressione sulla cache del kernel e 2) inizieranno prima la preparazione per l'esaurimento della memoria, avviando anticipatamente lo swap. Ma sarà uno swap della memoria compressa molto più efficiente tramite ZRAM!

Ecco le righe che devi aggiungere alla fine del file /etc/sysctl.conf:

vm.vfs_cache_pressure=500
vm.swappiness=100
vm.dirty_background_ratio=1
vm.dirty_ratio=50

Poi riavviamo il sistema o attiviamo le modifiche con il seguente comando:

sudo sysctl --system

vm.vfs_cache_pressure=500 aumenta la pressione sulla cache, il che aumenta la propensione del kernel alla ricollocazione della memoria utilizzata per la cache degli oggetti delle directory e degli indici. Utilizzerai meno memoria per un periodo di tempo più lungo. Un brusco calo delle prestazioni viene annullato da un swapping anticipato.

vm.swappiness=100 aumenta il parametro su quanto aggressivamente il kernel scambierà le pagine di memoria, poiché stiamo prima usando ZRAM.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 — i processi in background inizieranno a scrivere non appena viene raggiunto il limite dell'1%, ma il sistema non eseguirà forzatamente I/O sincrono fino a quando non verrà raggiunto dirty_ratio del 50%.

Queste quattro righe (utilizzando ZRAM) aiuteranno a migliorare le prestazioni se hai inevitabilmente esaurito la memoria RAM e inizia a passare allo swapping, come è successo a me. Sapendo questo, e considerando la compressione della memoria in ZRAM, è meglio iniziare questo swapping in anticipo.

La pressione sulla cache è utile perché stiamo effettivamente dicendo al kernel: "Ehi, ascolta, non ho memoria extra da usare per la cache, quindi per favore liberati di essa il prima possibile e conserva solo i dati più usati/importanti."

Anche riducendo la caching, se nel tempo gran parte della memoria disponibile è occupata, il kernel inizierà a swap opportunisticamente molto prima, quindi il processore (compressione) e l'I/O di swapping non si tratterranno fino all'ultimo e non impegneranno tutte le risorse contemporaneamente quando sarà già troppo tardi. ZRAM utilizza un po' di CPU per la compressione, ma nella maggior parte dei sistemi con poca memoria ha molto meno impatto sulle prestazioni rispetto allo swapping senza ZRAM.

In conclusione

Rivediamo il risultato:

pi@raspberrypi:~ $ free -h
totale usato libero condiviso buff/cache disponibile
Mem: 926Mi 471Mi 68Mi 168Mi 385Mi 232Mi
Swap: 1.2Gi 258Mi 999Mi

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Filename Type Size Used Priority
/var/swap file 102396 0 -2
/dev/zram0 partition 1185368 264448 5

264448 in ZRAM è quasi un gigabyte di dati non compressi. Tutto è andato in ZRAM e nulla è finito nel file di swap molto più lento. Prova queste impostazioni, funzionano su tutti i modelli di Raspberry Pi. Il mio sistema con problemi di blocco è diventato funzionante e stabile.

Nel prossimo futuro spero di continuare e aggiornare questo articolo con alcuni risultati dei test del sistema prima e dopo l'installazione di ZRAM. Al momento non ho semplicemente tempo per farlo. Nel frattempo, non esitate a eseguire i vostri test e fatemi sapere nei commenti. Il Raspberry Pi 4 è davvero potente con queste impostazioni. Buon divertimento!

A proposito:

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster