Prestazioni Raspberry Pi: aggiunta ZRAM e modifica dei parametri del kernel

Un paio di settimane fa ho postato Recensione Pinebook Pro. Poiché anche il Raspberry Pi 4 è basato su ARM, alcune delle ottimizzazioni menzionate nell'articolo precedente sono adatte a questo scopo. Mi piacerebbe condividere questi trucchi e vedere se riscontri gli stessi miglioramenti delle prestazioni.

Dopo aver installato Raspberry Pi nel tuo sala server domestica Ho notato che nei momenti di carenza di RAM diventava molto insensibile e addirittura si bloccava. Per risolvere questo problema, ho aggiunto ZRAM e apportato alcune modifiche ai parametri del kernel.

Attivazione ZRAM su Raspberry Pi

Prestazioni Raspberry Pi: aggiunta ZRAM e modifica dei parametri del kernel

ZRAM crea un archivio di blocchi nella RAM denominato /dev/zram0 (o 1, 2, 3, ecc.). Le pagine scritte lì vengono compresse e archiviate in memoria. Ciò consente I/O molto veloci e libera memoria tramite la compressione.

Il Raspberry Pi 4 viene fornito con 1, 2, 4 o 8 GB di RAM. Utilizzerò il modello da 1 GB, quindi modifica le istruzioni in base al tuo modello. Con 1 GB di ZRAM, il file di swap predefinito (lento!) verrà utilizzato meno spesso. Ho usato questo script zram-swap per l'installazione e la configurazione automatica.

Le istruzioni sono fornite nel repository collegato sopra. Installazione:

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

Se vuoi modificare la configurazione:

vi /etc/default/zram-swap

Inoltre, puoi attivare ZRAM installando zram-tools. Se usi questo metodo, assicurati di modificare il file config in archivio /etc/default/zramswape installa circa 1 GB di ZRAM:

sudo apt install zram-tools

Dopo l'installazione, puoi visualizzare le statistiche di archiviazione 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:~ $

Aggiunta di parametri del kernel per un migliore utilizzo di ZRAM

Ora correggiamo il comportamento del sistema quando il Raspberry Pi passa allo swapping all'ultimo momento, il che spesso porta a blocchi. Aggiungiamo alcune righe al file /etc/sysctl.conf e riavviare.

Queste righe 1) ritarderà l’inevitabile esaurimento della memoria, aumentando la pressione sulla cache del kernel e 2) iniziano a prepararsi per l'esaurimento della memoria prima, avviando lo scambio in anticipo. Ma sarà molto più efficiente scambiare la memoria compressa tramite ZRAM!

Ecco le righe da 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

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

sudo sysctl --system

vm.vfs_cache_pressione=500 aumenta la pressione della cache, che aumenta la tendenza del kernel a recuperare la memoria utilizzata per memorizzare nella cache le directory e indicizzare gli oggetti. Utilizzerai meno memoria per un periodo di tempo più lungo. Il forte calo delle prestazioni viene annullato da uno scambio anticipato.

vm.swappiness = 100 aumenta il parametro con quale aggressività il kernel scambierà le pagine di memoria, poiché stiamo usando prima ZRAM.

vm.dirty_ background_ratio=1 & vm.dirty_ratio=50 - i processi in background inizieranno a registrare immediatamente dopo aver raggiunto il limite dell'1%, ma il sistema non forzerà l'I/O sincrono finché non raggiungerà dirty_ratio del 50%.

Queste quattro righe (se utilizzate con ZRAM) contribuiranno a migliorare le prestazioni, se disponibili inevitabilmente La RAM si esaurisce e inizia il passaggio allo swap, come il mio. Sapendo questo fatto, e tenendo conto anche della compressione della memoria nella ZRAM di tre volte, è meglio avviare questo scambio in anticipo.

Mettere pressione sulla cache aiuta perché essenzialmente stiamo dicendo al kernel: "Ehi, guarda, non ho memoria extra da usare per la cache, quindi per favore sbarazzatene il prima possibile e memorizza solo quelli usati più di frequente/importanti dati."

Anche con un caching ridotto, se nel tempo la maggior parte della memoria installata viene occupata, il kernel inizierà lo scambio opportunistico molto prima, in modo che la CPU (compressione) e l'I/O di scambio non aspetteranno fino all'ultimo minuto e utilizzeranno tutte le risorse contemporaneamente quando è troppo tardi. ZRAM utilizza una piccola CPU per la compressione, ma sulla maggior parte dei sistemi con piccole quantità di memoria ha un impatto sulle prestazioni molto inferiore rispetto allo scambio senza ZRAM.

insomma

Consideriamo nuovamente il risultato:

pi@raspberrypi:~ $ free -h
total used free shared buff/cache available
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 alla ZRAM e nulla è andato al file di paging molto più lento. Prova tu stesso queste impostazioni, funzionano su tutti i modelli Raspberry Pi. Il mio sistema inutilizzabile e congelato è diventato funzionale 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. Ora semplicemente non ho tempo per questo. Nel frattempo, sentiti libero di eseguire i tuoi test e fammi sapere nei commenti. Il Raspberry Pi 4 è una bestia con queste impostazioni. Godere!

Sul tema:

Fonte: habr.com

Aggiungi un commento