Prestaties van Raspberry Pi: ZRAM toevoegen en kernelparameters aanpassen

Een paar weken geleden heb ik een review van de Pinebook Pro. Aangezien de Raspberry Pi 4 ook op ARM is gebaseerd, zijn sommige van de optimalisaties die in het vorige artikel zijn genoemd heel geschikt voor haar. Ik wil deze trucs delen en ontdekken of jullie ook dezelfde prestatiewinst ervaren.

Na de installatie van de Raspberry Pi in mijn thuisserver merkte ik dat ze bij momenten van geheugen tekort erg traag werd en zelfs bevroren. Om dit probleem op te lossen, heb ik ZRAM toegevoegd en enkele aanpassingen aan de kernelparameters aangebracht.

ZRAM activeren op de Raspberry Pi

Prestaties van Raspberry Pi: ZRAM toevoegen en kernelparameters aanpassen

ZRAM creƫert een blokopslag in het RAM-geheugen met de naam /dev/zram0 (of 1, 2, 3 enz.). De opgeslagen pagina's worden gecomprimeerd en in het geheugen bewaard. Dit zorgt voor zeer snelle invoer-/uitvoer en vrijmaakt geheugen door compressie.

De Raspberry Pi 4 is verkrijgbaar met 1, 2, 4 of 8 GB RAM. Ik ga de 1 GB-versie gebruiken, dus pas de instructies aan op basis van je model. Met 1 GB zal het standaard swapbestand (langzaam!) minder vaak worden gebruikt. Ik heb het volgende script gebruikt zram-swap voor de installatie en automatische configuratie.

De instructies zijn te vinden in de repository via de bovenstaande link. Installatie:

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

Als je het configuratiebestand wilt bewerken:

vi /etc/default/zram-swap

Daarnaast kan ZRAM geactiveerd worden door zram-tools. te installeren. Als je deze methode gebruikt, bewerk dan zeker het configuratiebestand in het bestand /etc/default/zramswap, en stel ongeveer 1 GB ZRAM in:

sudo apt install zram-tools

Na de installatie kun je de statistieken van de ZRAM-opslag bekijken met de volgende opdracht:

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

Kernelparameters toevoegen voor beter gebruik van ZRAM

Laten we nu het gedrag van het systeem verbeteren wanneer de Raspberry Pi op het laatste moment naar swap gaat, wat vaak leidt tot vastlopers. We voegen een paar regels toe aan het bestand /etc/sysctl.conf en herstarten.

Deze regels 1) vertragen het onvermijdelijke geheugen tekort, verhogen de druk op de kernelcache en 2) beginnen eerder met voorbereidingen voor geheugen tekort, door swap voorafgaand te initieren. Maar dit zal een veel effectievere swap van gecomprimeerd geheugen zijn via ZRAM!

Hier zijn de regels die aan het einde van het bestand moeten worden toegevoegd: /etc/sysctl.conf:

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

Herstart het systeem of activeer de wijzigingen met de volgende opdracht:

sudo sysctl --system

vm.vfs_cache_pressure=500 verhoogt de druk op de cache, wat de neiging van de kernel vergroot om het geheugen dat voor het cachen van directory- en indexobjecten wordt gebruikt, weer te recyclen. Je gebruikt minder geheugen over een langere periode. Een scherpe daling van de prestaties wordt tegengegaan door eerder te swappen.

vm.swappiness=100 verhoogt de parameter waarmee de kernel agressiever pagina's uit het geheugen gaat swappen, omdat we eerst ZRAM gebruiken.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 — achtergrondprocessen beginnen onmiddellijk met schrijven zodra de limiet van 1% is bereikt, maar het systeem zal geen gedwongen synchronieuze I/O uitvoeren totdat het de dirty_ratio van 50% bereikt.

Deze vier regels (in combinatie met ZRAM) zullen helpen om de prestaties te verbeteren wanneer je onvermijdelijk uitvoeringgeheugen raakt en begint met swappen, zoals bij mij. Wetende dat dit feit zich voordoet, en gezien het feit dat de compressie van geheugen in ZRAM drie keer beter is, is het beter om met swappen eerder te beginnen.

Druk op de cache helpt, omdat we de kernel in feite zeggen: "HĆ©, luister, ik heb geen extra geheugen om voor cache te gebruiken, dus laat het alsjeblieft zo snel mogelijk los en bewaar alleen de meest gebruikte/belangrijke gegevens."

Zelfs met verminderde caching, als in de loop van de tijd het merendeel van het geĆÆnstalleerde geheugen vol raakt, zal de kernel veel eerder opportunistisch gaan swappen, zodat de processor (compressie) en I/O van swap niet tot het laatst worden doorgetrokken en alle middelen tegelijkertijd worden aangesproken wanneer het al te laat is. ZRAM gebruikt een beetje CPU voor compressie, maar in de meeste systemen met weinig geheugen heeft dit veel minder invloed op de prestaties dan swappen zonder ZRAM.

Ter conclusie

Laten we nogmaals naar het resultaat kijken:

pi@raspberrypi:~ $ free -h
totaal gebruikt vrij gedeeld buff/cache beschikbaar
Geheugen: 926Mi 471Mi 68Mi 168Mi 385Mi 232Mi
Swap: 1.2Gi 258Mi 999Mi

pi@raspberrypi:~ $ sudo cat /proc/swaps
Bestandsnaam Type Grootte Gebruikt Prioriteit
/var/swap bestand 102396 0 -2
/dev/zram0 partitie 1185368 264448 5

264448 in ZRAM — dat is bijna ƩƩn gigabyte ongecomprimeerde gegevens. Alles ging naar ZRAM en niets kwam in het veel langzamere swapbestand terecht. Probeer deze instellingen zelf, ze werken op alle modellen van de Raspberry Pi. Mijn onwerkbare systeem is veranderd in een werkbare en stabiele.

In de nabije toekomst hoop ik deze artikel te vervolgen en bij te werken met enkele testresultaten van het systeem voor en na de installatie van ZRAM. Op dit moment heb ik daar gewoon de tijd niet voor. Voel je ondertussen vrij om je eigen tests uit te voeren en laat het me weten in de opmerkingen. Raspberry Pi 4 is gewoon een beest met dergelijke instellingen. Geniet ervan!

Over dit onderwerp:

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster