Mogelijk hebt u systeemachterstanden, intensief swapgebruik of problemen met weinig geheugen in uw Linux-systeem ervaren. Een gebruikelijk advies is om "de swappiness-waarde te verlagen", het swapgebruik te verminderen. maar wat is zwoegen? En is het echt goed om het te tweaken?

Opmerking : we zullen niet in detail treden over de swappartitie. Je kunt er alles over lezen in ons artikel over wat je moet weten over Swappartitie op Linux.

swappiness

Er is een waarde met de naam swappiness in UNIX-achtige systemen die bepaalt hoe pagina's in het geheugen worden verwerkt. De standaardwaarde op de meeste systemen is "60", maar deze kan worden ingesteld op alles tussen 0 en 100. Als het geheugen bijna leeg is, zal de kernel sommige bestandscaches verwijderen om meer vrij RAM-geheugen voor processen te hebben, of het zal een proces omwisselen pagina's van RAM naar schijf.

Een standaardwaarde van 60 betekent dat swappen minder wordt gebruikt en dat er meer kans is op I / O-caches om RAM opnieuw toe te wijzen. Het uitzetten van caches wordt beschouwd als "goedkoper" (minder hulpbronnenintensief), terwijl het omwisselen van pagina's schijflezen en schrijven omvat, waardoor ze "duurder" worden. Bij een waarde van '60 'zal het swapgebruik iets lager zijn dan het cachegeheugen. Als de waarde van swappiness wordt verhoogd naar 100, wordt swapping en bestandscache-uitzetting met hetzelfde gewicht gebruikt. Dit betekent meer swapping en snellere I / O dan standaard. Lagere waarden zoals "10" betekenen dat swappen veel minder worden gebruikt, en I / O-caches kunnen veel eerder worden uitgezet ten gunste van processen. Dit kan de interactiviteit vergroten, maar kan ook de I / O-snelheid negatief beïnvloeden.

Dalende swappiness

U zult vaak het advies op websites en forums zien om het aantal swappiness rond de 10 te verminderen. Dit zou de snelheid moeten verhogen door minder swap te gebruiken en meer processen in fysiek RAM te houden. Deze logica kan enigszins te rechtlijnig zijn en is misschien geen "one size fits all oplossing".

Het verlagen van de waarde van swappiness kan in de volgende scenario's goed zijn:

  • Voor databasesystemen, of als u veel database-intensieve applicaties gebruikt : Databases behandelen bestandscaching veel beter dan het OS zou doen. Als je swappiness reduceert, beperk je de bestandscaching van het besturingssysteem, waardoor de database een kans krijgt om zijn eigen caches te verwerken.
  • Voor interactiviteit : als u veel multitaskt, maar weinig bestanden verwerkt of geen grote documenten opent, kan dit de werking van uw systeem verbeteren. Minder processen worden op schijf weggeschreven en omdat RAM-toegang veel sneller is, kan uw computer sneller aanvoelen. Houd er ook rekening mee dat dit de I / O-prestaties kan verminderen. Als je trage schijven hebt of iets I / O-intensief doet, kan dit zelfs de prestaties schaden.
  • Voor placebo : velen geloven dat een lagere swappiness het systeem zal versnellen. Serieus, als je denkt dat je systeem sneller is, kan het ook het gevolg zijn van het waarnemen dat het sneller is.

Houd er rekening mee dat een afnemende swappiness kan resulteren in crashes en processen die willekeurig worden gedood door het systeem om geheugen vrij te maken. Afnemende swappiness is het beste als u voldoende RAM beschikbaar heeft om uw systeem soepel te laten werken. Maar u moet de waarde boven "10" behouden, omdat sommige swap-gebruik goed is.

Toenemende swappiness

Toenemende swappiness kan het algemene voordeel hebben van het versnellen van I / O. Hoewel niet vaak geadviseerd, kan het vergroten van de swappiness handig zijn als:

  • U voert enkele I / O-intensieve bewerkingen uit en u hebt trage, oude HDD's . Bijvoorbeeld: het uitvoeren van back-ups of afbeeldingen voor het bewerken van batches kan I / O-intensief zijn (een opmerkelijke uitzondering zijn databases die van nature I / O-intensief zijn, maar kunnen profiteren van een lagere swappiness-waarde zoals hierboven te zien.).
  • Je hebt weinig geheugen maar hebt relatief snelle schijven. In dit onwaarschijnlijke scenario kan een hogere waarde van swappiness helpen om het geheugen efficiënter aan te pakken (hoewel het te hoog instellen van de prestaties de prestaties nadelig kan beïnvloeden).

Hoe om te gaan met swappiness

Eerst moet je overwegen of je deze waarde helemaal moet aanraken. Ervaar je prestatieproblemen? En nog belangrijker, heb je al andere systeemwijzigingen geprobeerd? Zo niet, dan is het waarschijnlijk het beste om eerst ergens anders naar te kijken. Maar als u een specifiek scenario in gedachten heeft, wilt u misschien doorgaan.

Vervolgens, hoe zwaar is uw swapgebruik? U kunt het uitzoeken met elk hulpmiddel voor prestatiebewaking van uw keuze of met de free opdracht. free -m geeft je een momentopname van het geheugengebruik in megabytes. Voor continu toezicht kunt u het watch.

 kijk -n 1 gratis -m 

Hiermee wordt de free -m opdracht free -m elke seconde uitgevoerd en wordt de uitvoer afgedrukt totdat u op "Ctrl + C" drukt.

Zoals je hierboven ziet, wordt er heel weinig gebruikt door het systeem waarop dit artikel is geschreven.

Als je nu wel eens ruilt, ben je misschien geïnteresseerd in hoeveel ervan actief is. Het commando vmstat zal u alles vertellen wat u moet weten over het gebruik van het virtuele geheugen van uw systeem (swap en fysieke ram samen).

 vmstat 1 

U moet de swap kolom controleren waarin si "inruilen" betekent en so "uitwisselen" betekent. Als de cijfers hoog zijn, betekent dit veel ruilactiviteit, wat een indicator is van problemen met weinig geheugen. Als u het gebruik van swap door free maar weinig actieve swapping ziet, is tweaken mogelijk nodig.

Het is ook een goed idee om andere prestatiebenchmarks vast te stellen, zoals schijf-I / O, belastingsgemiddelden enz., Dus wanneer u uw nieuwe swappiness-waarden test, moet u iets vergelijken.

Om een ​​andere swappiness-waarde te testen, kunt u deze tijdelijk instellen met de opdracht sysctl . Dit vereist geen reboot en het effect is onmiddellijk. Herstarten herstelt namelijk de standaardwaarde, dus je bent best veilig om te experimenteren:

 sudo sysctl vm.swappiness = 10 

Natuurlijk kunt u elke waarde in plaats van "10" plaatsen (tussen "0" en "100").

Zodra u uw gewenste waarde heeft gevonden, kunt u de systeemconfiguratie permanent wijzigen door "/etc/sysctl.conf" te bewerken

 sudo nano /etc/sysctl.conf 

en het toevoegen van de lijnen

 #Set swappiness value vm.swappiness = 10 

aan het einde van dit bestand, uiteraard met de waarde weer ingesteld op jouw voorkeur.

Conclusie

Het verlagen van de swappiness naar "10" wordt vaak geadviseerd als een one-size-fits-all oplossing, maar het daadwerkelijke gebruik van de techniek kan een klein beetje ingewikkelder zijn dan dat. Door benchmarks vast te stellen, uw systeem te kennen, te weten hoe u het gebruikt en wat u er van nodig hebt, kunt u het gebruik van uw swap nauwkeuriger instellen en een aantal prestaties (ofwel interactiviteit of I / O) verhogen.