Hoe RAM geheugen Cache, Buffer en Swap ruimte op Linux

net als elk ander besturingssysteem, GNU/Linux heeft een geheugenbeheer efficiënt en zelfs meer dan dat geïmplementeerd. Maar als een proces je geheugen opeet en je wilt het wissen, biedt Linux een manier om de ram-cache te spoelen of te wissen.

Ram-Cache wissen en Swap in Linux

hoe Cache wissen in Linux?

elk Linux systeem heeft drie opties om cache te wissen zonder processen of services te onderbreken.

1. Alleen pagecache wissen.

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

2. Ontruim gebitsprotheses en inodes.

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

3. Duidelijke PageCache, kunstgebitten en inodes.

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

uitleg van bovenstaande opdracht.

sync zal de buffer van het bestandssysteem spoelen. Commando gescheiden door ";” achtereenvolgens uitvoeren. De shell wacht tot elk commando wordt beëindigd voordat het volgende commando in de reeks wordt uitgevoerd. Zoals vermeld in kernel documentatie, zal schrijven naar drop_cache cache opschonen zonder enige toepassing/service te doden, command echo doet het werk van het schrijven naar een bestand.

Als u de schijfcache moet wissen, is het eerste commando het veiligst in enterprise en productie omdat "...echo 1 > ….” alleen de PageCache zal wissen. Het wordt niet aanbevolen om de derde optie boven "...echo 3 >” in productie te gebruiken totdat u weet wat u doet, omdat het pagecache, dentries en inodes zal wissen.

Is het een goed idee om Buffer en Cache vrij te maken in Linux die gebruikt kunnen worden door de Linux Kernel?

wanneer u verschillende instellingen toepast en wilt controleren of het daadwerkelijk speciaal is geïmplementeerd op I / O-uitgebreide benchmark, dan moet u mogelijk buffercache wissen. U kunt cache laten vallen zoals hierboven uitgelegd zonder het systeem te herstarten, d.w.z. geen downtime vereist.

Linux is zo ontworpen dat het in de schijfcache kijkt voordat het naar de schijf kijkt. Als het de bron in de cache vindt, dan bereikt het verzoek de schijf niet. Als we de cache opschonen, zal de schijfcache minder nuttig zijn omdat het besturingssysteem zal zoeken naar de bron op de schijf.

bovendien zal het systeem ook een paar seconden vertragen terwijl de cache wordt schoongemaakt en elke bron die door OS wordt vereist opnieuw in de disk-cache wordt geladen.

nu zullen we een shell-script maken om dagelijks om 2 uur ‘ s nachts automatisch de RAM-cache te wissen via een cron scheduler-taak. Een shell-script aanmaken clearcache.sh en voeg de volgende regels toe.

#!/bin/bash# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"echo "echo 3 > /proc/sys/vm/drop_caches"

stel uitvoerrechten in op de clearcache.sh dossier.

# chmod 755 clearcache.sh

nu kunt u het script aanroepen wanneer u nodig hebt om de ram-cache te wissen.

stel nu een cron in om RAM-cache elke dag om 02: 00 uur te wissen. Open crontab voor bewerken.

# crontab -e

voeg de onderstaande regel toe, Sla op en sluit af om deze dagelijks om 2 uur uit te voeren.

0 2 * * * /path/to/clearcache.sh

voor meer informatie over hoe een taak te cron kunt u ons artikel over 11 Cron Scheduling banen.

Is het een goed idee om de RAM-cache automatisch te wissen op de productieserver?

Nee! dat is het niet. Denk aan een situatie wanneer u het script hebt gepland om ram cache te wissen elke dag om 02: 00. Elke dag om 02: 00 het script wordt uitgevoerd en het spoelt uw RAM cache. Een dag om welke reden dan ook, kan meer dan verwacht gebruikers zijn online op uw website en op zoek naar bron van uw server.

tegelijkertijd wordt het geplande script uitgevoerd en wordt alles in de cache gewist. Nu haalt alle gebruiker gegevens van de schijf op. Het zal resulteren in server crash en corrupt de database. Dus duidelijk ram-cache alleen wanneer dat nodig is, en je voetstappen bekend, anders ben je een Cargo Cult systeembeheerder.

hoe Wissel ruimte in Linux?

Als u de wisselruimte wilt wissen, kunt u het onderstaande commando uitvoeren.

# swapoff -a && swapon -a

ook kunt u bovenstaande opdracht toevoegen aan een cron script hierboven, nadat u alle bijbehorende risico ‘ s hebt begrepen.

nu zullen we beide bovenstaande commando ‘ s combineren in één commando om een goed script te maken om RAM Cache en Swap ruimte te wissen.

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'OR$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root

na het testen van beide bovenstaande commando, zullen we Commando” free-h ” uitvoeren voor en na het uitvoeren van het script en zullen we de cache controleren.

Wis RAM-Cache en Swap-ruimte

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *