Zoeken op website

Hoe RAM-geheugencache, buffer en swap op Linux te wissen


Net als elk ander besturingssysteem heeft GNU/Linux geheugenbeheer efficiënt geïmplementeerd en zelfs meer dan dat. Als een proces echter je geheugen opvreet en je het wilt wissen, biedt Linux een manier om de RAM-cache leeg te maken of te wissen.

In dit artikel zullen we onderzoeken hoe u RAM-geheugencache, buffer en swapruimte op een Linux-systeem kunt wissen om de algehele prestaties te verbeteren.

Inzicht in RAM-geheugencache, buffer en swapruimte

Laten we RAM-geheugencache, buffer en swapruimte op een Linux-systeem verkennen.

RAM-geheugencache

De RAM-geheugencache is een mechanisme dat door de kernel wordt gebruikt om regelmatig gebruikte gegevens bij te houden. Hoewel dit de reactiesnelheid van het systeem vergroot, kan een overbelaste cache leiden tot het vasthouden van verouderde gegevens, wat de prestaties beïnvloedt.

Buffer

Net als cache houdt de buffer gegevens tijdelijk vast, maar het doel ervan verschilt. Buffers slaan gegevens op die worden overgedragen tussen componenten zoals de CPU en de harde schijf, waardoor een soepele communicatie mogelijk wordt gemaakt. Een teveel aan gebufferde gegevens kan echter de systeemsnelheid belemmeren.

Wissel ruimte

Swapruimte is een toegewezen gebied op de harde schijf dat fungeert als virtueel geheugen wanneer het fysieke RAM-geheugen uitgeput is. Hoewel het systeemcrashes als gevolg van weinig geheugen voorkomt, kan het het systeem vertragen als het te veel wordt gebruikt.

Cache-, buffer- en swapruimte wissen in Linux

In bepaalde situaties moet u mogelijk de cache, buffer leegmaken of ruimte wisselen, zoals hieronder wordt uitgelegd.

Hoe RAM-geheugencache in Linux wissen?

Elk Linux-systeem heeft drie opties om de cache te wissen zonder processen of services te onderbreken.

Paginacache wissen

1. Om alleen de PageCache te wissen, kunt u de volgende opdracht gebruiken, waarmee specifiek de PageCache wordt gewist, waardoor geheugenbronnen worden vrijgemaakt.

sudo sync; echo 1 > /proc/sys/vm/drop_caches

Dentries en inodes opruimen

2. Om alleen de dentries en inodes te wissen, kun je de volgende opdracht gebruiken, die het bestandssysteem synchroniseert en zowel dentries als inodes wist, het verbeteren van de systeemprestaties door het vrijgeven van in de cache opgeslagen directory- en inode-informatie.

sudo sync; echo 2 > /proc/sys/vm/drop_caches

PageCache, Dentries en Inodes wissen

3. Om de pagecache, dentries en inodes te wissen, kun je de volgende opdracht gebruiken, die zal synchroniseren het bestandssysteem en wis de paginacache, dentries en inodes, waardoor geheugen wordt vrijgemaakt en de systeemprestaties worden verbeterd.

sudo sync; echo 3 > /proc/sys/vm/drop_caches 

Hier is een uitleg van elk onderdeel van de bovenstaande opdracht:

  • De sudo wordt gebruikt om de opdracht als superuser uit te voeren.
  • De sync zal de bestandssysteembuffer leegmaken.
  • De “; ” puntkomma wordt gebruikt om meerdere opdrachten op één regel te scheiden.
  • De opdracht echo 3 > /proc/sys/vm/drop_caches wordt gebruikt om de paginacache, een tijdelijke opslagplaats voor recent geopende bestanden, te verwijderen.

Opmerking: het bestand drop_caches bepaalt welk type gegevens in de cache moet worden gewist en de waarden zijn als volgt:

  • 1 – Wist alleen de paginacache.
  • 2 – Wist dentries en inodes.
  • 3 – Wist paginacache, dentries en inodes.

Zoals vermeld in de kerneldocumentatie, zal het schrijven naar drop_caches de cache opschonen zonder enige applicatie/service te doden, commando-echo doet het schrijven naar het bestand.

Als u de schijfcache moet wissen, is de eerste opdracht het veiligst in bedrijfs- en productieomgevingen als “...echo 1 > …. ” zal alleen de PageCache wissen.

Het wordt niet aanbevolen om de derde optie boven “...echo 3 > ” in productie te gebruiken totdat u weet wat u doet, omdat hierdoor pagecache, dentries, en inodes.

Hoe swapruimte in Linux vrij te maken?

Om swapruimte vrij te maken, kun je de opdracht swapoff gebruiken met de optie -a, waardoor alle swappartities worden uitgeschakeld.

sudo swapoff -a

Draai het vervolgens terug door de volgende opdracht uit te voeren, waardoor alle swappartities worden geactiveerd.

sudo swapon -a

Is het raadzaam om gratis te bufferen, cachen en swappen in Linux?

Over het algemeen is het geen goed idee om handmatig Buffer en Cache in Linux vrij te maken die mogelijk worden gebruikt door de Linux-kernel, die is ontworpen om deze bronnen efficiënt te beheren. en het handmatig wissen ervan kan de systeemprestaties verstoren.

Er kunnen zich echter zeldzame situaties voordoen waarin u de Buffer en Cache moet wissen, bijvoorbeeld als u ernstige geheugendruk ervaart en geen geheugen op een andere manier kunt vrijmaken. In deze gevallen moet u voorzichtig te werk gaan en u bewust zijn van de mogelijke gevolgen voor de prestaties.

Op dezelfde manier is het vrijmaken van swapruimte onder Linux onder normale omstandigheden over het algemeen geen routinematige of aan te raden praktijk.

Automatisering van geheugenoptimalisatie

Om het proces te automatiseren en regelmatig het geheugen te wissen, kunt u een cron-taak instellen om de opdrachten met gespecificeerde intervallen uit te voeren.

Open de crontab-configuratie.

crontab -e

Voeg de volgende regels toe om dagelijks om middernacht cache-, buffer- en swapruimte vrij te maken:

0 0 * * * sudo sync; echo 3 > /proc/sys/vm/drop_caches
0 0 * * * sudo echo 1 > /proc/sys/vm/drop_caches
0 0 * * * sudo sync; echo 2 > /proc/sys/vm/drop_caches
0 0 * * * sudo swapoff -a && sudo swapon -a

Voor meer informatie over het plannen van een taak met cron, kunt u ons artikel met de titel '11 Cron-taken plannen' raadplegen.

Is het raadzaam om RAM-cache op een Linux-productieserver te wissen?

Nee dat is het niet. Overweeg een scenario waarin u een script hebt gepland om de RAM-cache elke dag om 02.00 uur te wissen. Elke dag om 02.00 uur wordt het script uitgevoerd, waardoor uw RAM-cache wordt leeggemaakt. Op een dag zijn er echter onverwacht grote aantallen gebruikers online op uw website, waardoor een aanzienlijk beslag wordt gelegd op uw serverbronnen.

Tegelijkertijd wordt het geplande script uitgevoerd en wordt alles in de cache gewist. Nu halen alle gebruikers gegevens van de schijf op, wat mogelijk kan leiden tot een servercrash en databasecorruptie. Daarom is het essentieel om de RAM-cache alleen te wissen als dat nodig is, waarbij u rekening moet houden met uw acties. Anders loopt u het risico een Cargo Cult-systeembeheerder te worden.

Conclusie

Efficiënt geheugenbeheer is cruciaal voor een soepel draaiend Linux-systeem. Het regelmatig wissen van de RAM-geheugencache, buffer en swapruimte kan de systeemprestaties aanzienlijk verbeteren. Door deze mechanismen te begrijpen en de meegeleverde commando's te gebruiken, kun je je Linux-systeem op zijn best laten draaien.

Dat is het voor nu. Als je het artikel leuk vond, vergeet dan niet om je waardevolle feedback in de reacties te delen. Laat ons uw mening weten over wat volgens u een goede aanpak is voor het wissen van de RAM-cache en -buffer in productie- en bedrijfsomgevingen.