Wie Linux -Dateisystem -Cache funktioniert
Der Kernel behält sich eine bestimmte Menge an Systemspeicher vor, um den Zugriff auf die Dateisystemdiskette zwischenzuspeichern, um die Gesamtleistung schneller zu gestalten. Der Cache in Linux wird der genannt Seitencache. Die Größe des Seiten -Cache ist konfigurierbar, wobei großzügige Standardeinstellungen ermöglicht werden, um große Mengen von Festplattenblöcken zu untersuchen. Die maximale Größe des Cache und die Richtlinien, wann Daten aus dem Cache räumen können, sind mit Kernelparametern einstellbar. Der Linux-Cache-Ansatz wird als Writing-Back-Cache bezeichnet. Dies bedeutet, wenn Daten auf die Festplatte geschrieben werden, wird sie in den Speicher in den Cache geschrieben und im Cache als schmutzig gekennzeichnet. Der Kernel verwaltet interne Datenstrukturen, um zu optimieren, welche Daten aus Cache räumen sollen, wenn mehr Platz im Cache benötigt wird.
Während der Linux -Lesesystemaufrufe prüft der Kernel, ob die angeforderten Daten in Datenblöcken im Cache gespeichert sind. Dies wäre ein erfolgreicher Cache -Treffer und die Daten werden aus dem Cache zurückgegeben, ohne dass IO an das Festplattensystem ausgeführt wird. Für einen Cache werden die Daten aus dem IO -System abgerufen und der Cache basierend auf den Caching -Richtlinien aktualisiert, da dieselben Daten wahrscheinlich erneut angefordert werden.
Wenn bestimmte Schwellenwerte der Speichernutzung erreicht sind, werden Hintergrundaufgaben anfangen, schmutzige Daten auf die Festplatte zu schreiben, um sicherzustellen, dass der Speichercache gelöscht wird. Diese können sich auf die Leistung von Speicher- und CPU -intensiven Anwendungen auswirken und müssen durch Administratoren und oder Entwickler eingestellt werden.
Verwenden Sie den kostenlosen Befehl zum Anzeigen der Cache -Nutzung
Wir können den kostenlosen Befehl aus der Befehlszeile verwenden, um den Systemspeicher und die Menge des Speicherspeichers, das dem Caching zugewiesen wird, zu analysieren. Siehe Befehl unten:
# frei -m
Was wir aus dem sehen frei Befehl oben ist, dass es 7 gibt.5 GB RAM auf diesem System. Von diesem wird nur 209 MB verwendet und 6.5 MB ist kostenlos. 667 MB werden im Puffer -Cache verwendet. Versuchen wir nun, diese Zahl zu erhöhen, indem wir einen Befehl ausführen, um eine Datei mit 1 Gigabyte zu generieren und die Datei zu lesen. Der folgende Befehl generiert ungefähr 100 MB Zufallsdaten und fügt dann 10 Kopien der Datei zusammen in eine Large_file.
# dd if =/dev/random von =/root/data_file count = 1400000
# für i in 'seq 1 10'; echo $ i; cat data_file >> large_file; Erledigt
Jetzt werden wir sicherstellen, dass diese 1 Gig -Datei lesen und dann den kostenlosen Befehl erneut überprüfen:
# cat larg_file> /dev /null
# frei -m
Wir können sehen.
Proc Sys VM Drop Caches -Befehl
Der Linux -Kernel bietet eine Schnittstelle zum Ablegen des Cache.
# echo 1>/proc/sys/vm/drop_caches
# frei -m
Wir können oben sehen, dass der Großteil der Puffer -Cache -Zuweisung mit diesem Befehl befreit wurde.
Experimentelle Überprüfung, die Caches -Werke fallen lassen
Können wir eine Leistungsvalidierung der Verwendung des Cache zum Lesen der Datei durchführen?? Lassen Sie uns die Datei lesen und an /dev /null zurückschreiben, um zu testen, wie lange es dauert, die Datei von der Festplatte zu lesen. Wir werden es mit dem zeitlich zeitstellen Zeit Befehl. Wir machen diesen Befehl unmittelbar nach dem Löschen des Cache mit den obigen Befehlen.
Es dauerte 8.4 Sekunden zum Lesen der Datei. Lassen Sie es uns jetzt noch einmal lesen, da die Datei im Dateisystem -Cache enthalten sein sollte und wie lange sie jetzt dauert.
Boom! Es dauerte nur .2 Sekunden im Vergleich zu 8.4 Sekunden, um es zu lesen, wenn die Datei nicht zwischengespeichert wurde. Um dies zu überprüfen, wiederholen wir dies erneut, indem Sie zuerst den Cache löschen und dann die Datei 2 Mal lesen.
Es hat wie erwartet perfekt funktioniert. 8.5 Sekunden für die nicht abgespannte Lektüre und .2 Sekunden für die zwischengespeicherte Lektüre.
Abschluss
Der Seiten -Cache wird automatisch auf Linux -Systemen aktiviert und macht IO transparent schneller, indem kürzlich verwendete Daten im Cache gespeichert werden. Wenn Sie den Cache manuell löschen möchten, der einfach durch Senden eines Echo -Befehls an das /proc -Dateisystem gesendet werden kann, das dem Kernel angibt, um den Cache zu fallen und den für den Cache verwendeten Speicher zu befreien. Die Anweisungen zum Ausführen des Befehls wurden in diesem Artikel oben angezeigt und die experimentelle Validierung des Cache -Verhaltens vor und nach dem Spülen wurde ebenfalls gezeigt.