Performanța Raspberry Pi: adăugăm ZRAM și modificăm parametrii nucleului

Acum câteva săptămâni am publicat o recenzie la Pinebook Pro. Deoarece Raspberry Pi 4 este, de asemenea, bazată pe ARM, unele dintre optimizările menționate în articolul anterior se potrivesc perfect. Aș dori să împărtășesc aceste trucuri și să aflu dacă veți observa la fel de multe îmbunătățiri în performanță.

După ce am instalat Raspberry Pi în serverul meu de acasă , am observat că în momentele de deficit de memorie RAM, devine foarte nefuncțională și chiar se blochează. Pentru a rezolva această problemă, am adăugat ZRAM și am făcut câteva modificări în setările kernel-ului.

Activarea ZRAM pe Raspberry Pi

Performanța Raspberry Pi: adăugăm ZRAM și modificăm parametrii nucleului

ZRAM creează un depozit bloc în memoria RAM numit /dev/zram0 (sau 1, 2, 3 etc.). Pagini scrise acolo sunt comprimate și stocate în memorie. Acest lucru permite un I/O foarte rapid, precum și eliberarea memoriei prin comprimare.

Raspberry Pi 4 vine cu 1, 2, 4 sau 8 GB de RAM. Voi folosi modelul de 1 GB, așa că ajustați instrucțiunile în funcție de modelul dumneavoastră. Cu 1 GB, fișierul swap implicit (lent!) va fi utilizat mai rar. Am folosit un script zram-swap pentru a instala și a configura automat.

Instrucțiunile sunt disponibile în repository-ul de mai sus. Instalare:

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

Dacă doriți să editați configurația:

vi /etc/default/zram-swap

De asemenea, se poate activa ZRAM prin instalarea zram-tools. Dacă folosiți această metodă, asigurați-vă că editați configurația în fișierul /etc/default/zramswap, și setați aproximativ 1 GB ZRAM:

sudo apt install zram-tools

După instalare, puteți vizualiza statistica depozitului ZRAM cu următoarea comandă:

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

Adăugăm parametrii kernel-ului pentru o utilizare mai bună a ZRAM

Acum vom corecta comportamentul sistemului atunci când Raspberry Pi comută pe swap în ultimul moment, ceea ce adesea duce la blocaje. Vom adăuga câteva linii în fișierul /etc/sysctl.conf și ne vom reintra în sistem.

Aceste linii 1) vor întârzii epuizarea inevitabilă a memoriei, crescând presiunea asupra cache-ului kernel-ului și 2) vor începe devreme pregătirea pentru epuizarea memoriei, inițiind anticipat swap-ul. Dar aceasta va fi o swapare mult mai eficientă a memoriei comprimate prin ZRAM!

Iată liniile care trebuie adăugate la sfârșitul fișierului /etc/sysctl.conf:

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

Apoi repornim sistemul sau activăm modificările cu următoarea comandă:

sudo sysctl --system

vm.vfs_cache_pressure=500 crește presiunea asupra cache-ului, ceea ce determină nucleul să recicleze memoria utilizată pentru cache-ul obiectelor de directoare și indecși. Vei folosi mai puțină memorie pe o perioadă mai lungă. Scăderea drastică a performanței este eliminată printr-un swapping mai devreme.

vm.swappiness=100 crește parametrul cu cât de agresiv va swap nucleul paginile de memorie, deoarece folosim mai întâi ZRAM.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 — procesele de fundal vor începe scrierea imediat ce se atinge limita de 1%, dar sistemul nu va forța o intrare-ieșire sincronizată până când nu va ajunge la dirty_ratio de 50%.

Aceste patru linii (când sunt folosite cu ZRAM) vor ajuta la îmbunătățirea performanței în cazul în care ai inevitabil memoria RAM pe sfârșit și începe să treacă la swap, așa cum am eu. Conștientizând acest lucru, și având în vedere comprimarea memoriei în ZRAM este de trei ori mai bun, este mai bine să începi acest swapping mai devreme.

Presiunea asupra cache-ului ajută, deoarece practic spunem nucleului: „Hei, ascultă, nu am memorie suplimentară de utilizat pentru cache, așa că, te rog, scapă de ea cât mai repede și păstrează doar cele mai folosite / importante date.”

Chiar și cu o reducere a caching-ului, dacă în timp cea mai mare parte a memoriei instalate este utilizată, nucleul va începe un swapping oportunist mult mai devreme, astfel că procesorul (compresia) și intrarea-ieșirea de swapping nu vor trage până la capăt și nu vor tăia toate resursele deodată, când deja e prea târziu. ZRAM folosește puțin CPU pentru compresie, dar în cele mai multe sisteme cu o memorie mică, acest lucru afectează mult mai puțin performanța decât un swap fără ZRAM.

În concluzie

Haideți să ne uităm din nou la rezultat:

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 în ZRAM — este aproape un gigabyte de date nesuprimante. Totul a mers în ZRAM și nimic nu a ajuns în fișierul de swap mult mai lent. Încearcă aceste configurații, funcționează pe toate modelele Raspberry Pi. Sistemul meu instabil a devenit funcțional și stabil.

În viitorul apropiat, sper să continui și să actualizez acest articol cu unele rezultate ale testării sistemului înainte și după instalarea ZRAM. Acum, pur și simplu nu am timp pentru asta. Între timp, nu ezitați să efectuați propriile teste și să ne anunțați în comentarii. Raspberry Pi 4 este cu adevărat impresionant cu aceste configurații. Bucurați-vă!

Pe tema:

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster