2017-02-21 1 views
0

Ich bin sehr neu in Linux Speicherverwaltung Konzept beim Lesen etwas Speicherverwaltung bezogenen Dokument Ich hatte einige grundlegende Zweifel bitte erklären Sie mich.Was ist Speicherrückforderung in Linux

unter Berücksichtigung ist meine Config

vm.swappiness=10 
vm.vfs_cache_pressure=140 
vm.min_free_kbytes=2013265 

Mein Verständnis, wenn freier Speicher kleiner als vm.min_free_kbytes O gegangen ist, wird die Erinnerung zurückfordern.

1- Ist die Speicherrückgewinnung ein Löschen unerwünschter Dateien oder ein Kopieren von Daten aus dem Arbeitsspeicher?

2- Wenn es kopiert, um Speicher aus dem RAM zu tauschen, was passiert dann, wenn ich SWAP-Speicher nicht verwende?

3- Ist Swappiness immer größer als vm.min_free_kbytes?

4-Was die Signifikanzen von vm.vfs_cache_pressure?

Vielen Dank .. !!

Antwort

0
  1. Speicherrückforderungs ist der Mechanismus, der mehr freien RAM-Seiten erstellen, von irgendwo anders die Daten in ihnen wohnen zu werfen. Es hat nichts mit Dateien zu tun. Wenn mehr Arbeitsspeicher benötigt wird, werden Daten aus dem Arbeitsspeicher gelöscht (wenn sie erneut abgerufen werden können) oder in die Auslagerungsdatei kopiert (so dass die Daten sind, die rückübersetzbar sind).

  2. Wenn keine Auslagerungsdatei vorhanden ist, aber einige Daten im (nicht vorhandenen) Auslagerungsbereich gespeichert werden sollen, tritt ein Fehler aufgrund unzureichenden Arbeitsspeichers auf. In der Regel wird dies dem Prozess gemeldet, der versucht, den Speicher zu erhalten (via alloc() und Ähnliches) - das alloc() schlägt fehl und gibt NULL zurück. Der Prozess kann wählen, was zu tun ist, oder sogar abstürzen. Wenn der Speicher vom Kernel selbst benötigt wird (normalerweise ziemlich selten), tritt eine PANIC auf und das System wird vollständig gesperrt.

  3. Swappiness ist, in Prozent, die Tendenz des Kernels, den Swap zu verwenden, auch wenn er nicht unbedingt benötigt wird, um genügend RAM für Speicheranforderungen bereit zu haben. Einfach gesagt bedeutet 100% Swappiness, dass der Kernel versucht, immer zu tauschen, Swappiness von 0 bedeutet, dass der Kernel versucht, keinen Swap zu machen (es gibt jedoch einige spezielle Werte). min_free_kbytes zeigt reale kylobytes an, es ist kein Prozentsatz, und es ist die minimale Menge, die immer frei sein sollte, damit der Kernel gut funktioniert. Selbst das Starten einer Speicherrückgewinnung könnte etwas mehr RAM erfordern, um den Job zu erledigen: Es wäre katastrophal, wenn man, um etwas Speicher zu bekommen, nur ein wenig Speicher braucht, aber nicht hat! :-)

  4. vfs_cache_pressure ist wieder ein Prozentsatz. Es zeigt an, wie viel der Kernel versucht, den (Speicher-) Cache zu löschen, der für das Dateisystem verwendet wird (vfs = virtuelles Dateisystem). Der Cache für das Dateisystem ist ein guter Kandidat zum Wegwerfen, da er Informationen leicht lesbar von der Platte hält. Wenn der Computer häufig das Dateisystem verwenden muss, muss er leider immer dieselben Daten lesen und erneut lesen und immer wieder lesen. Caching ist ein großer Leistungsschub. Natürlich, wenn ein System wenig Festplatten-I/O macht, dann ist dieser Cache der beste Kandidat, um wegzuwerfen, wenn der Speicher hungrig ist.

All diese Dinge werden hier kurz und bündig erklärt: https://www.kernel.org/doc/Documentation/sysctl/vm.txt

+0

viel für Ihre Antwort danken, nur noch eine Frage Klarheit zu bekommen wenn es keine Swap-Partition ist, min_free_kbytes = 2G und die System Freier Speicher wird erreicht bis 2GB Sind die Daten (Cache.Puffer, ..) gelöscht oder geht das System in OOM-Zustand? –

+0

@MohamedAshraf Das Dokument, das ich verlinkt habe, ist sehr erfolgreich und sagt: "Wenn Sie dies zu hoch einstellen, wird OOM Ihre Maschine sofort". Ich denke, dass der Kernel so lange arbeiten wird, wie er Daten verwerfen kann (praktisch nur die Caches), und dann in eine Endlosschleife eintritt, die versucht, die angegebenen min_free_kbytes zu erreichen, ohne Erfolg zu haben. Aber ich bin mir nicht wirklich sicher. – linuxfan

Verwandte Themen