Un paio di settimane fa ho pubblicato . 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 , 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

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 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.shSe 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-toolsDopo 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=50Poi riavviamo il sistema o attiviamo le modifiche con il seguente comando:
sudo sysctl --systemvm.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 5264448 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:
- (2017)
- (2020)
Fonte: habr.com
