Zusammenfassung der Methoden zum Löschen des Cache im Linux-System

Zusammenfassung der Methoden zum Löschen des Cache im Linux-System

1) Einführung in den Cache-Mechanismus

Um die Leistung des Dateisystems im Linux-System zu verbessern, verwendet der Kernel einen Teil des physischen Speichers, um einen Puffer für die Zwischenspeicherung von Systemvorgängen und Datendateien zuzuweisen. Wenn der Kernel eine Lese- oder Schreibanforderung empfängt, prüft er zunächst im Cache, ob die angeforderten Daten vorhanden sind. Wenn dies der Fall ist, kehrt er direkt zurück. Wenn nicht, bedient er die Festplatte direkt über den Treiber.
Vorteile des Cache-Mechanismus: Reduzierung der Anzahl der Systemaufrufe, Reduzierung des CPU-Kontextwechsels und der Häufigkeit des Festplattenzugriffs.

CPU-Kontextwechsel: Die CPU gibt jedem Prozess eine bestimmte Servicezeit. Wenn die Zeitscheibe aufgebraucht ist, fordert der Kernel den Prozessor vom laufenden Prozess zurück, speichert den aktuellen Ausführungszustand des Prozesses und lädt dann die nächste Aufgabe. Dieser Vorgang wird als Kontextwechsel bezeichnet. Im Wesentlichen handelt es sich dabei um den Prozesswechsel zwischen dem beendeten Prozess und dem auszuführenden Prozess.

2) Überprüfen Sie den Cache und die Speichernutzung

[root@localhost ~]# frei -m
       insgesamt genutzte freie gemeinsam genutzte Puffer im Cache
Mitglied: 7866 7725 141 19 74 6897
-/+ Puffer/Cache: 752 7113
Tausch: 16382 32 16350

Aus den obigen Befehlsergebnissen können wir ersehen, dass der Gesamtspeicher 8 GB beträgt, 7725 MB verwendet werden und 141 MB übrig bleiben. Viele Leute sehen das so.
Dies kann jedoch nicht als tatsächliche Auslastungsrate angesehen werden. Aufgrund des Cache-Mechanismus lautet der spezifische Algorithmus wie folgt:

Freier Speicher = frei (141) + Puffer (74) + zwischengespeichert (6897)

Verwendeter Speicher = gesamt (7866) - freier Speicher

Daraus können wir errechnen, dass der freie Speicher 7112 MB und der genutzte Speicher 754 MB beträgt. Dies ist die tatsächliche Nutzungsrate. Sie können auch die Informationen zu -/+ Puffern/Cachezeilen zu Rate ziehen, die ebenfalls die korrekte Speichernutzungsrate darstellen.

3) Cache-Unterscheidung zwischen Puffern und zwischengespeicherten

Der Kernel weist die Puffergröße zu und stellt gleichzeitig sicher, dass das System den physischen Speicher verwenden und Daten normal lesen und schreiben kann.

Puffer werden zum Zwischenspeichern von Metadaten und Seiten verwendet und können als Systemcache verstanden werden, z. B. wenn vi eine Datei öffnet.

cached wird zum Zwischenspeichern von Dateien verwendet und kann als Datenblock-Cache verstanden werden. Wenn beispielsweise der Test dd if=/dev/zero of=/tmp/test count=1 bs=1G eine Datei schreibt, wird sie im Puffer zwischengespeichert. Wenn dieser Testbefehl das nächste Mal ausgeführt wird, ist die Schreibgeschwindigkeit deutlich schneller.

4) Nutzung tauschen

Swap bedeutet Swap-Partition. Normalerweise ist der virtuelle Speicher, von dem wir sprechen, eine von der Festplatte abgetrennte Partition. Wenn der physische Speicher nicht ausreicht, gibt der Kernel einige Programme im Puffer (Cache) frei, die lange Zeit nicht verwendet wurden, und legt diese Programme dann vorübergehend in Swap ab. Das heißt, Swap wird nur verwendet, wenn der physische Speicher und der Cache-Speicher nicht ausreichen.

Swap-Bereinigung:

swapoff -a und swapon -a

Hinweis: Für diese Bereinigung gibt es eine Voraussetzung. Der freie Speicher muss größer sein als der bereits verwendete Swap-Speicher.

5) So geben Sie den Cache-Speicher frei

a) Seitencache leeren

# echo 1 > /proc/sys/vm/drop_caches oder # sysctl -w vm.drop_caches=1

b) Dentries (Verzeichnis-Cache) und Inodes bereinigen

# echo 2 > /proc/sys/vm/drop_caches oder # sysctl -w vm.drop_caches=2

c) Pagecache, Dentries und Inodes bereinigen

# echo 3 > /proc/sys/vm/drop_caches oder # sysctl -w vm.drop_caches=3

Die oben genannten drei Methoden sind alle temporäre Möglichkeiten, den Cache freizugeben. Um den Cache dauerhaft freizugeben, müssen Sie in der Datei /etc/sysctl.conf Folgendes konfigurieren: vm.drop_caches=1/2/3, und dann wird sysctl -p wirksam!

Darüber hinaus können Sie mit dem Befehl „Sync“ den Dateisystem-Cache bereinigen, wodurch auch Zombie-Objekte und der von ihnen belegte Speicher bereinigt werden.

# synchronisieren

Die oben genannten Vorgänge schaden dem System in den meisten Fällen nicht, sondern helfen lediglich, ungenutzten Speicher freizugeben.

Wenn jedoch während der Ausführung dieser Vorgänge Daten geschrieben werden, werden die Daten tatsächlich aus dem Dateicache gelöscht, bevor sie die Festplatte erreichen, was nachteilige Auswirkungen haben kann. Wie können wir also verhindern, dass dies passiert?

Daher müssen wir hier die Datei /proc/sys/vm/vfs_cache_pressure erwähnen, die dem Kernel mitteilt, welche Priorität beim Bereinigen des Inoe/Dentry-Cache verwendet werden soll.

vfs_cache_pressure=100 Dies ist der Standardwert. Der Kernel versucht, Dentries und Inodes neu zu deklarieren und ein „vernünftiges“ Verhältnis zum Seitencache und Swap-Cache einzunehmen.
Wenn Sie den Wert von vfs_cache_pressure verringern, neigt der Kernel dazu, Dentry- und Inode-Caches beizubehalten.
Wenn der Wert von vfs_cache_pressure erhöht wird (d. h. über 100), neigt der Kernel dazu, Dentries und Inodes neu zu deklarieren

Zusammengefasst ist der Wert von vfs_cache_pressure:
Werte unter 100 führen nicht zu einer nennenswerten Reduzierung des Caches, Werte über 100 teilen dem Kernel jedoch mit, dass der Cache mit hoher Priorität geleert werden soll.

Tatsächlich löscht der Kernel den Cache mit relativ niedriger Geschwindigkeit, unabhängig davon, welcher vfs_cache_pressure-Wert verwendet wird.
Wenn Sie diesen Wert auf 10000 setzen, reduziert das System den Cache auf ein sinnvolles Maß.

Verwenden Sie vor der Freigabe des Speichers den Befehl „Sync“, um die Integrität des Dateisystems sicherzustellen und alle nicht geschriebenen Systempuffer (einschließlich geänderter I-Nodes, verzögerter Block-E/A und Lese-/Schreib-Zuordnungsdateien) auf die Festplatte zu schreiben. Andernfalls können beim Cache-Freigabevorgang nicht gespeicherte Dateien verloren gehen.

/proc ist ein virtuelles Dateisystem, das als Kommunikationsmittel mit der Kernel-Entität durch Lese- und Schreibvorgänge verwendet werden kann. Mit anderen Worten: Das Verhalten des aktuellen Kernels kann durch Ändern der Dateien in /proc angepasst werden. Das heißt, wir können Speicher freigeben, indem wir /proc/sys/vm/drop_caches anpassen.

Der Wert von drop_caches kann eine Zahl zwischen 0 und 3 sein, die unterschiedliche Bedeutungen haben:

0: Nicht freigeben (Systemstandardwert)
1: Den Seitencache freigeben
2: Dentries und Inodes freigeben
3: Alle Caches freigeben

Das Obige ist alles Wissenswerte über das Leeren des Caches im Linux-System. Vielen Dank für Ihr Wissen und Ihre Unterstützung für 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • PHP-Programmierer spielen Linux-Serie Nginx Anfängerhandbuch
  • Nasm implementiert den Bootcode zum Ausführen einer selbst erstellten Linux-Bootdiskette mit VMware
  • Analyse des Linux-Bootvorgangs
  • Linux Administratorhandbuch (5) - Booten und Herunterfahren
  • Hinweise zu Linux-Systembefehlen
  • Zusammenfassung der Befehle zur Benutzerverwaltung im Linux-System
  • Detaillierte Erklärung des sudo-Befehls im Linux-System
  • Linux-Systembefehl zum Löschen von Ordnern und Dateien
  • So verwenden Sie den Befehl dd unter Linux
  • Zusammenfassung von zehn Tipps zum sudo-Befehl im Linux-System
  • Analyse der Linux-Bootsystemmethoden

<<:  So legen Sie die UTF-8-Kodierung in einer MySQL-Datenbank fest

>>:  JavaScript CSS3 zur Implementierung einer einfachen Video-Sperrfunktion

Artikel empfehlen

Detaillierte Einführung in das MySQL-Schlüsselwort Distinct

Einführung in die Verwendung des MySQL-Schlüsselw...

JS realisiert den Front-End-Paging-Effekt

In diesem Artikelbeispiel wird der spezifische JS...

Prozess des Klassenlademechanismus von Tomcat und Quellcodeanalyse

Inhaltsverzeichnis Vorwort 1. Strukturdiagramm de...

Problem mit der V-HTML-Rendering-Komponente

Da ich bereits HTML analysiert habe, möchte ich h...

Installieren Sie Docker für Windows unter Windows 10 Home Edition

0. Hintergrund Hardware: Xiaomi Notebook Air 13/I...

Natives, benutzerdefiniertes Rechtsklickmenü von js

In diesem Artikelbeispiel wird der spezifische Co...

Verwendung des Linux-Befehls ln

1. Befehlseinführung Mit dem Befehl ln werden Lin...

Vue3.0 handgeschriebener Karusselleffekt

In diesem Artikel wird der spezifische Code des h...

So kapseln Sie Paging-Komponenten manuell in Vue3.0

In diesem Artikel wird der spezifische Code der m...

Einführung in die reaktive Funktion toRef-Funktion ref-Funktion in Vue3

Inhaltsverzeichnis Reaktive Funktion Verwendung: ...

Datagrip2020 kann MySQL-Treiber nicht herunterladen

Wenn Sie es nicht durch direktes Klicken auf „Dow...

Details zu den Überwachungseigenschaften der Uhr in Vue

Inhaltsverzeichnis 1.watch überwacht Änderungen i...

Zusammenfassung gängiger MySQL-Befehle

Festlegen des MySQL-Root-Passworts Melden Sie sic...

Vue verwendet el-table, um Spalten und Zeilen dynamisch zusammenzuführen

In diesem Artikelbeispiel wird der spezifische Co...

Verwendung und Analyse des Mysql Explain-Befehls

Mit dem Befehl „mysql explain“ wird gezeigt, wie ...