Výkon Raspberry Pi: pridávame ZRAM a meníme parametre jadra

Pred pár týždňami som publikoval prezreview Pinebook Pro. Keďže Raspberry Pi 4 je tiež založená na architektúre ARM, niektoré optimalizácie spomenuté v predchádzajúcom článku sú pre ňu vhodné. Chcel by som sa podeliť o tieto triky a zistiť, či sa u vás prejavia podobné zlepšenia výkonu.

Po nainštalovaní Raspberry Pi do svojho domáceho servera som si všimol, že v momentoch nedostatku operačnej pamäte sa stávala veľmi necitlivou a dokonca zamŕzala. Aby som tento problém vyriešil, pridal som ZRAM a vykonal niekoľko zmien v parametroch jadra.

Aktivácia ZRAM na Raspberry Pi

Výkon Raspberry Pi: pridávame ZRAM a meníme parametre jadra

ZRAM vytvára v operačnej pamäti blokové úložisko s názvom /dev/zram0 (alebo 1, 2, 3 atď.). Stránky zapisované tam sa komprimujú a uchovávajú v pamäti. To umožňuje veľmi rýchlu vstupno-výstupnú operáciu a tiež uvoľňuje pamäť kompresiou.

Raspberry Pi 4 je dodávaná s 1, 2, 4 alebo 8 GB operačnej pamäte. Ja budem používať model s 1 GB, preto si prispôsobte inštrukcie podľa svojej modelu. Pri 1 GB ZRAM sa predvolený swapovací súbor (pomalý!) bude používať menej často. Použil som tento skript zram-swap na inštaláciu a automatické nastavenie.

Inštrukcie sú uvedené v repozitári na vyššie uvedenom odkaze. Inštalácia:

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

Ak chcete upraviť konfiguráciu:

vi /etc/default/zram-swap

Okrem toho môžete ZRAM aktivovať inštaláciou zram-tools. Ak používate tento spôsob, určite upravte konfiguráciu v súbore /etc/default/zramswap, a nastavte približne 1 GB ZRAM:

sudo apt install zram-tools

Po inštalácii môžete zobraziť štatistiku úložiska ZRAM nasledujúcou príkazom:

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

Pridáme parametre jadra pre lepšie využitie ZRAM

Teraz opravíme správanie systému, keď Raspberry Pi prechádza na swap až v poslednej chvíli, čo často vedie k zamŕzaniu. Pridáme niekoľko riadkov do súboru /etc/sysctl.conf a reštartujeme.

Tieto riadky 1) odsunú nevyhnutný pokles pamäte, zvýšením tlaku na jadrový cache a 2) skôr začnú pripravovať na pokles pamäte, vopred iniciovaním swapovania. Ale to bude oveľa efektívnejšie swapovanie komprimovanej pamäte prostredníctvom ZRAM!

Tu sú riadky, ktoré treba pridať na koniec súboru /etc/sysctl.conf:

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

Potom reštartujeme systém alebo aktivujeme úpravy nasledujúcou príkazom:

sudo sysctl --system

vm.vfs_cache_pressure=500 zvyšuje tlak na cache, čo zvyšuje sklon jadra k rekultivácii pamäte používaného na cacheovanie objektov adresárov a indexov. Budete používať menej pamäte počas dlhšieho časového obdobia. Náhly pokles výkonu sa kompenzuje skôr swapovaním.

vm.swappiness=100 zvyšuje parameter, ako agresívne bude jadro swapovať stránky pamäte, keďže najprv používame ZRAM.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 — pozadie procesy začnú zapisovať okamžite po dosiahnutí limitu 1%, ale systém nebude nútene vykonávať synchronný vstup-výstup, kým nedosiahneme dirty_ratio na 50%.

Tieto štyri riadky (v používaní so ZRAM) pomôžu zlepšiť výkon v prípade, ak máte nevyhnutne nedostatok operačnej pamäte a začne sa prechod na swap, ako u mňa. Keďže si som vedomý tejto skutočnosti a taktiež zohľadňujem kompresiu pamäte v ZRAM, je oveľa lepšie začať toto swapovanie skôr.

Tlak na cache pomáha, pretože vlastne hovoríme jadru: "Hej, počúvaj, nemám ďalšiu pamäť, aby som ju mohol používať na cache, preto ťa prosím, zbav sa jej čo najskôr a uchovávaj len najčastejšie používané/dôležité dáta".

Aj pri znížení cacheovania, ak časom bude väčšina nainštalovanej pamäte obsadená, jadro začne oportunistické swapovanie oveľa skôr, tak procesor (kompresia) a vstup/výstup swapovania nebudú čakať na poslednú chvíľu a zaťažovať všetky zdroje naraz, keď už bude príliš neskoro. ZRAM používa trochu CPU na kompresiu, ale v väčšine systémov s malým objemom pamäte to má oveľa menší dopad na výkon než swap bez ZRAM.

Na záver

Pozrime sa ešte raz na výsledok:

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 v ZRAM — to je takmer jeden gigabajt nescompressovaných dát. Všetko sa dostalo do ZRAM a nič nešlo do oveľa pomalšieho swap súboru. Vyskúšajte si tieto nastavenia, fungujú na všetkých modeloch Raspberry Pi. Môj nefunkčný, zamrznutý systém sa stal funkčným a stabilným.

V najbližšej budúcnosti dúfam, že sa mi podarí pokračovať v aktualizácii tohto článku s niektorými výsledkami testovania systému pred a po inštalácii ZRAM. Teraz na to jednoducho nemám čas. A zatiaľ sa nebojte robiť vlastné testy a dajte mi vedieť v komentároch. Raspberry Pi 4 je s takýmito nastaveniami skutočne víťaz. Užite si to!

Na tému:

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster