So löschen Sie den RAM-Speicher-Cache, den Puffer und den Swap Space unter Linux


Wie jedes andere Betriebssystem hat GNU/Linux eine Speicherverwaltung effizient und noch mehr implementiert. Wenn jedoch ein Prozess Ihren Speicher verschlingt und Sie ihn löschen möchten, bietet Linux eine Möglichkeit, den RAM-Cache zu leeren oder zu löschen.

Jedes Linux-System verfügt über drei Optionen zum Löschen des Cache, ohne Prozesse oder Dienste zu unterbrechen.

1. Nur PageCache löschen.

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

2. Löschen Sie Einträge und Inodes.

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

3. Löschen Sie den PageCache, die Einträge und die Inodes.

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

Erläuterung des obigen Befehls.

Durch die Synchronisierung wird der Dateisystempuffer geleert. Befehl Getrennt durch “;” wird nacheinander ausgeführt. Die Shell wartet, bis jeder Befehl beendet ist, bevor sie den nächsten Befehl in der Sequenz ausführt. Wie in der Kerneldokumentation erwähnt, wird beim Schreiben in drop_cache der Cache bereinigt, ohne dass eine Anwendung oder ein Dienst beendet wird. Das Befehlsecho übernimmt das Schreiben in eine Datei.

Wenn Sie den Festplatten-Cache leeren müssen, ist der erste Befehl in Unternehmen und Produktion am sichersten, da "... echo 1> ..." nur den PageCache löscht. Es wird nicht empfohlen, die dritte Option über "... echo 3>" in der Produktion zu verwenden, bis Sie wissen, was Sie tun, da dadurch PageCache, Dentries und Inodes gelöscht werden.

Wenn Sie verschiedene Einstellungen anwenden und überprüfen möchten, ob diese tatsächlich speziell für E/A-umfangreiche Benchmarks implementiert sind, müssen Sie möglicherweise den Puffercache leeren. Sie können den Cache wie oben erläutert löschen, ohne das System neu zu starten, d. H. Es sind keine Ausfallzeiten erforderlich.

Linux ist so konzipiert, dass es in den Festplatten-Cache schaut, bevor es auf die Festplatte schaut. Wenn die Ressource im Cache gefunden wird, erreicht die Anforderung die Festplatte nicht. Wenn wir den Cache bereinigen, ist der Festplatten-Cache weniger nützlich, da das Betriebssystem nach der Ressource auf der Festplatte sucht.

Darüber hinaus wird das System einige Sekunden lang verlangsamt, während der Cache bereinigt wird und jede vom Betriebssystem benötigte Ressource erneut in den Festplatten-Cache geladen wird.

Jetzt erstellen wir ein Shell-Skript, um den RAM-Cache täglich um 2 Uhr morgens über eine Cron-Scheduler-Aufgabe automatisch zu löschen. Erstellen Sie ein Shell-Skript clearcache.sh und fügen Sie die folgenden Zeilen hinzu.

#!/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"

Legen Sie die Ausführungsberechtigung für die Datei clearcache.sh fest.

# chmod 755 clearcache.sh

Jetzt können Sie das Skript jederzeit aufrufen, wenn Sie den RAM-Cache leeren möchten.

Stellen Sie nun einen Cron ein, um den RAM-Cache jeden Tag um 2 Uhr morgens zu löschen. Öffnen Sie crontab zum Bearbeiten.

# crontab -e

Fügen Sie die folgende Zeile hinzu, speichern Sie sie und beenden Sie sie, um sie täglich um 2 Uhr morgens auszuführen.

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

Weitere Informationen zum Erstellen von Jobs finden Sie in unserem Artikel zu 11 Cron Scheduling Jobs.

Nein! es ist nicht. Stellen Sie sich eine Situation vor, in der Sie das Skript so geplant haben, dass der RAM-Cache täglich um 2 Uhr morgens geleert wird. Jeden Tag um 2 Uhr morgens wird das Skript ausgeführt und der RAM-Cache geleert. Eines Tages aus irgendeinem Grund sind möglicherweise mehr als erwartet Benutzer auf Ihrer Website online und suchen nach Ressourcen von Ihrem Server.

Gleichzeitig wird das geplante Skript ausgeführt und alles im Cache gelöscht. Jetzt rufen alle Benutzer Daten von der Festplatte ab. Dies führt zum Absturz des Servers und zur Beschädigung der Datenbank. Löschen Sie den RAM-Cache also nur bei Bedarf und kennen Sie Ihre Schritte, sonst sind Sie ein Systemadministrator für Frachtkult.

Wenn Sie den Swap-Bereich löschen möchten, können Sie den folgenden Befehl ausführen.

# swapoff -a && swapon -a

Sie können den obigen Befehl auch zu einem Cron-Skript hinzufügen, nachdem Sie alle damit verbundenen Risiken verstanden haben.

Jetzt werden wir beide oben genannten Befehle zu einem einzigen Befehl kombinieren, um ein geeignetes Skript zum Löschen des RAM-Cache und des Swap Space zu erstellen.

# 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

Nachdem wir beide oben genannten Befehle getestet haben, führen wir den Befehl "free -h" vor und nach dem Ausführen des Skripts aus und überprüfen den Cache.

Wenn Ihnen der Artikel gefallen hat, vergessen Sie nicht, uns in den Kommentaren Ihr wertvolles Feedback zu geben, damit wir wissen, was Ihrer Meinung nach eine gute Idee ist, RAM-Cache und -Puffer in Produktion und Unternehmen zu löschen.