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

Due settimane fa ho pubblicato una recensione del Pinebook Pro. Poiché anche il Raspberry Pi 4 è basato su ARM, alcune delle ottimizzazioni menzionate nel precedente articolo si adattano perfettamente. Vorrei condividere questi trucchi e scoprire se anche voi vedrete miglioramenti delle prestazioni simili.

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

Attivazione di ZRAM su Raspberry Pi

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

ZRAM crea uno storage a blocchi in memoria RAM chiamato /dev/zram0 (o 1, 2, 3, ecc.). Le pagine scritte vengono compresse e memorizzate in memoria. Questo permette di garantire un input-output molto veloce e liberare memoria tramite la compressione.

Il Raspberry Pi 4 è disponibile con 1, 2, 4 o 8 GB di RAM. Utilizzerò il modello da 1 GB, quindi regolate le istruzioni in base al vostro modello. Con 1 GB, il file di swap predefinito (lento!) sarà utilizzato meno frequentemente. Ho usato questo script zram-swap per installarlo e configurarlo automaticamente.

Le istruzioni sono disponibili nel repository nel link sopra. Installazione:

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

Se desideri modificare il file di configurazione:

vi /etc/default/zram-swap

Inoltre, puoi attivare ZRAM installando zram-tools. Se utilizzi questo metodo, assicurati di modificare il file di configurazione nel file /etc/default/zramswap, e installa 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 il Raspberry Pi attua lo swap all'ultimo momento, il che porta spesso a blocchi. Aggiungeremo alcune righe nel file /etc/sysctl.conf e ci riavvieremo.

Queste righe 1) ritardano l'inevitabile esaurimento della memoria, aumentando la pressione sulla cache del kernel e 2) iniziano a prepararsi prima per l'esaurimento della memoria, attivando lo swap in anticipo. Ma sarà uno swap di memoria compressa molto più efficace 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

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

sudo sysctl --system

vm.vfs_cache_pressure=500 aumenta la pressione sul cache, il che rende il kernel più propenso a recuperare la memoria utilizzata per la memorizzazione nella cache degli oggetti delle directory e degli indici. Utilizzerai meno memoria per un periodo di tempo più lungo. Una caduta brusca delle prestazioni è compensata da uno swapping più tempestivo.

vm.swappiness=100 aumenta il parametro su quanto aggressivamente il kernel scambierà le pagine di memoria, dato che utilizziamo prima ZRAM.

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

Queste quattro righe (utilizzate con ZRAM) aiuteranno a migliorare le prestazioni nel caso in cui tu inevitabilmente esaurisca la memoria RAM e inizi a passare allo swapping, come nel mio caso. Sapendo di questo fatto, e considerando che la compressione della memoria in ZRAM è tre volte superiore, è meglio iniziare a fare questo swapping in anticipo.

La pressione sulla cache è utile perché stiamo effettivamente dicendo al nucleo: "Ehi, ascolta, non ho abbastanza memoria da dedicare alla cache, quindi ti prego di liberartene il prima possibile e di conservare solo i dati più utilizzati/essenziali."

Anche riducendo la cache, se nel tempo gran parte della memoria installata viene occupata, il nucleo inizierà a fare swapping opportunistico molto prima, in modo che il processore (compressione) e IO di paging non si affrettino fino all'ultimo e non utilizzino 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 un impatto molto minore sulle prestazioni rispetto allo swap senza ZRAM.

In conclusione

Rivediamo il risultato:

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

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Nome file Tipo Dimensione Utilizzato Priorità
/var/swap file 102396 0 -2
/dev/zram0 partizione 1185368 264448 5

264448 in ZRAM corrisponde a quasi un gigabyte di dati non compressi. Tutto è andato in ZRAM e nulla è finito nel file di swap molto più lento. Prova tu stesso queste impostazioni, funzionano su tutti i modelli Raspberry Pi. Un sistema che era inadeguato e pesante è 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. Nel frattempo, non esitare a eseguire i tuoi test e fammi sapere nei commenti. Il Raspberry Pi 4 è davvero incredibile con queste impostazioni. Buon divertimento!

A proposito di:

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