A Raspberry Pi teljesítménye: ZRAM hozzáadása és a kernel paraméterek módosítása

Néhány héttel ezelőtt közzétettem a Pinebook Pro áttekintését. Mivel a Raspberry Pi 4 is ARM-ra épül, így egyes optimalizációk, amelyekről a korábbi cikkben szó esett, jól alkalmazhatók rá. Szeretném megosztani ezeket a trükköket és megtudni, hogy hasonló teljesítménynövekedések tapasztalhatók-e nálatok is.

A Raspberry Pi telepítése után a otthoni szerveremben észrevettem, hogy amikor a memóriából hiány van, nagyon reagálatlan lett, sőt még meg is akadt. E probléma megoldására ZRAM-ot adtam hozzá, és néhány módosítást végeztem a kernel paramétereiben.

A ZRAM aktiválása a Raspberry Pi-n

A Raspberry Pi teljesítménye: ZRAM hozzáadása és a kernel paraméterek módosítása

ZRAM a RAM-ban egy blokktárolót hoz létre a /dev/zram0 (vagy 1, 2, 3 stb.) néven. Ide írva az oldalak tömörítve és memóriában tárolva lesznek. Ez nagyon gyors I/O-t biztosít, és felszabadít memóriát a tömörítés által.

A Raspberry Pi 4 1, 2, 4 vagy 8 GB RAM-mal érkezik. Én az 1 GB-os modellt fogom használni, ezért a utasítást a saját modelledhez igazítsd. Az 1 GB-os ZRAM-nál a default swap fájl (lassú!) ritkábban fog használatban lenni. Egy ilyen szkriptet használtam zram-swap a telepítés és az automatikus konfigurálás érdekében.

A telepítési utasítások a fenti linken található repo-ban találhatók. Telepítés:

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

Ha szeretnéd szerkeszteni a konfigurációt:

vi /etc/default/zram-swap

Továbbá a ZRAM aktiválható a zram-tools. telepítésével is. Ha ezt a módszert használod, mindenképpen szerkeszd a konfigurációt a fájlban /etc/default/zramswap, és állíts be körülbelül 1 GB ZRAM-ot:

sudo apt install zram-tools

A telepítés után a ZRAM tároló statisztikáját a következő paranccsal tekintheted meg:

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

Kernel paraméterek hozzáadása a ZRAM jobb kihasználása érdekében

Most javítsuk a rendszer viselkedését, amikor a Raspberry Pi utolsó pillanatban vált swapra, ami gyakran akadásokat okoz. Adjunk hozzá néhány sort a fájlhoz /etc/sysctl.conf majd indítsuk újra a rendszert.

Ezek a sorok 1) késleltetik a memória elkerülhetetlen kimerülését, növelve a kernel cache nyomását és 2)korábban kezdik meg a memória kimerülésének előkészületeit, előre inicializálva a swapot. De ez sokkal hatékonyabb swapot jelent a tömörített memória révén a ZRAM-on keresztül!Íme a sorok, amelyeket a fájl végére kell hozzáadni:

vm.vfs_cache_pressure=500 vm.swappiness=100 vm.dirty_background_ratio=1 vm.dirty_ratio=50 /etc/sysctl.conf:

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

Ezután újraindítjuk a rendszert, vagy aktiváljuk a módosításokat a következő parancs segítségével:

sudo sysctl --system

vm.vfs_cache_pressure=500 növeli a cache-re nehezedő nyomást, ami fokozza a kernel hajlandóságát a memória újrahasznosítására, amelyet a könyvtár- és indexobjektumok gyorsítótárazásához használnak. Kevesebb memória használatára fog kerülni hosszabb időn keresztül. Az éles teljesítménycsökkenés kompenzálja a korábbi swap-elést.

vm.swappiness=100 növeli a paramétert, hogy a kernel mennyire agresszívan hajtja végre a swap-elést, mivel először a ZRAM-ot használjuk.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 — a háttérfolyamatok azonnal elkezdenek írni, amint elérik az 1%-os határt, de a rendszer nem kényszeríti a szinkron I/O-t, amíg el nem éri az 50%-os dirty_ratio-t.

Ezek a négy sor (ZRAM használatával) segítenek a teljesítmény javításában abban az esetben, ha elkerülhetetlenül elfogy a RAM, és elkezdődik a swap-elés, mint nálam. E tény tudatában, valamint a ZRAM memóriasűrítésének köszönhetően, amely háromszor jobb, érdemes ezt a swap-elést korábban megkezdeni.

A cache-re nehezedő nyomás segít, mert gyakorlatilag azt mondjuk a kernelnek: „Hé, figyelj, nincs plusz memóriám, hogy cache-ként használjam, szóval kérlek, szabadulj meg tőle minél hamarabb, és tárold csak a leggyakrabban használt/változó adatokat”.

Még a cache csökkentése mellett is, ha idővel a telepített memória nagy része foglalt lesz, a kernel korábban fog opportunista swapelést végrehajtani, így a processzor (sűrítés) és az I/O swapelés nem fogja megvárni az utolsó pillanatot, hogy minden erőforrást egyszerre használjon fel, amikor már túl késő. A ZRAM kicsit igénybe veszi a CPU-t a sűrítéshez, de a legtöbb alacsony memóriájú rendszerben ez sokkal kisebb hatással van a teljesítményre, mint swap nélkül ZRAM-mal.

Végül

Nézzük meg újra az eredményt:

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 a ZRAM-ban — ez majdnem egy gigabájt tömörítetlen adat. Minden átkerült a ZRAM-ba, és semmi nem ment a sokkal lassabb swap fájlba. Próbálja ki ezeket a beállításokat, működnek minden Raspberry Pi modellen. Az én akadozó, működésképtelen rendszerem működőképes és stabil lett.

A közeljövőben remélem, hogy folytatom és frissítem ezt a cikket néhány teszt eredménnyel a ZRAM telepítése előtt és után. Jelenleg egyszerűen nincs rá időm. De addig ne habozz, végezd el a saját tesztjeidet, és tudasd velünk a megjegyzésekben. A Raspberry Pi 4 egyszerűen egy szörnyeteg ilyen beállításokkal. Élvezd!

A témában:

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster