Sie starten frei -h auf einem Server und der Spalte frei Die Anzeige zeigt nahezu Null an. Dennoch funktionieren die Anwendungen einwandfrei und es treten keine Speicherfehler auf. Dieses Ergebnis ist typisch: Linux nutzt ungenutzten Arbeitsspeicher als Cache und gibt bei Bedarf einen Teil davon wieder frei.
verfügbarund dann die Auslagerungs- und Speicheraktivität im Laufe der Zeit. Ein einzelner Wert gebraucht Das reicht nicht aus. Hier ist die Methode, die ich anwende, bevor ich einen Dienst beende oder RAM hinzufüge.

Beginnen Sie mit `free -h` und der Spalte `available`.
Für den Basisbefehl sind keine Administratorrechte erforderlich:
frei -h
Die Option -H Wählt automatisch eine lesbare Einheit aus, zum Beispiel MiB oder GiB. In der Zeile memBeginnen Sie mit diesen drei Spalten:
gesamt: der bekannte nutzbare Speicher des Kernels;verfügbar: die Schätzung des Speichers, den ein neuer Prozess ohne Auslagerungsvorgang erhalten kann;frei: Seiten, die derzeit überhaupt nicht genutzt werden.
verfügbar ist im Allgemeinen nützlicher als freiDer Kernel weiß, wie er einen Teil des Caches und wiederherstellbare Strukturen freigibt. Eine Maschine mit 300 MiB im frei aber 4 GiB in Der Arbeitsspeicher ist nicht erschöpft.
Lies die Werte für used, shared und buff/cache, ohne sie zu addieren.
Die Spalten von frei entsprechen nicht unabhängigen Schubladen, die addiert werden müssten. In neueren Versionen von procps-ng gebraucht wird berechnet aus gesamt Und verfügbar
geteilthauptsächlich nutzt den Speicher durchtmpfs;PufferUmfasst Kernpuffer;verstecktumfasst insbesondere den Dateicache und wiederherstellbare Strukturen;Puffer/CacheGruppiert Puffer und Cache in der Standardanzeige.
Trennen Puffer Und verstecktVerwenden Sie das Breitbilddisplay:
free -w -h
Diese Sichtweise hilft, die Speicherbelegung zu verstehen, ändert aber nichts an der Diagnose: Es bleibt die Frage, wie viel Speicher ohne Auslagerung zurückgewonnen werden kann und ob sich diese Reserve dauerhaft verringert.
Warum Linux den RAM mit Cache füllt
Das erneute Einlesen einer Datei aus dem Arbeitsspeicher ist ressourcenschonender als das Einlesen von einer SSD oder Festplatte. Daher speichert Linux kürzlich verwendete Daten im Seitencache. Solange keine Anwendung diesen Speicherplatz benötigt, bietet es keinen Vorteil, ihn leer zu lassen.
Löschen Sie die Caches nicht mit drop_caches die Wirbelsäule künstlich anheben freiSie löschen einen nützlichen Cache und zwingen das System, die Daten neu einzulesen. Diese Operation wird hauptsächlich für kontrollierte Tests verwendet, nicht für die routinemäßige Serverwartung.
Sie können die Quelle der Werte in /proc/meminfo :
grep -E '^(MemTotal|MemFree|MemAvailable|Buffers|Cached|SReclaimable|SwapTotal|SwapFree):' /proc/meminfo
MemAvailable
Wählen Sie die Einheiten aus und beobachten Sie mehrere Proben.
Um mehrere Geräte zu vergleichen oder einen Messwert anzuzeigen, verwenden Sie eine feste Einheit. -M Zeigt Mebibyte an. Für Dezimaleinheiten addieren Sie --Wenn :
frei -m
free -h --si
Vermeiden Sie es außerdem, aus einer einzelnen, isolierten Aufnahme Schlussfolgerungen zu ziehen. frei kann die Messung alle zwei Sekunden wiederholen und nach fünf Messungen stoppen:
free -h -s 2 -c 5
verfügbar Ein kontinuierlicher Leistungsabfall liegt vor, wenn der Tauschvorgang fortschreitet und sich die Situation nach Abschluss eines Prozesses wieder normalisiert. Ein kurzer Leistungsabfall während einer Datensicherung oder Kompilierung ist nicht dasselbe wie ein kontinuierlicher Leistungsabfall über mehrere Stunden.
Abgleich von RAM mit Swap und vmstat
Die Linie Tauschen von frei Es zeigt die Auslastung an, aber nicht die Aktivität. Einige Gigabytes an lange genutzten Daten beweisen nicht, dass der Rechner noch Seiten austauscht. Listen Sie die aktiven Bereiche auf und beobachten Sie dann… Wenn Und Also mit vmstat
swapon --show
vmstat 1 5
In Ignorieren Sie die erste Zeile für die momentane Aktivität: Sie stellt Durchschnittswerte seit Beginn dar. Die folgenden Zeilen zeigen die Stichproben. Wiederholte Werte in Wenn Oder Alsoverbunden mit a verfügbar
Der Leitfaden zu unter Linux austauschen erklärt, wann die Verwendung normal ist und warum das Löschen ohne RAM zum Einfrieren des Rechners führen kann.
Ermitteln Sie die Prozesse, die tatsächlich Speicher verbrauchen.
Bestätigen die Indikatoren Spannungen, sollten die zugrunde liegenden Prozesse identifiziert werden, bevor Maßnahmen ergriffen werden:
RSS Diese Kennzahl misst den physischen Speicherverbrauch eines Prozesses, wobei einige Seiten von mehreren Prozessen gemeinsam genutzt werden können. Daher kann die Summe aller RSS-Werte den tatsächlichen Verbrauch überschätzen. Nutzen Sie diese Liste, um einen potenziellen Fehler zu identifizieren und überprüfen Sie anschließend den Dienst, seine Konfiguration und seine Protokolle.
In htopSortieren Sie nach Speicher, ermitteln Sie die Prozess-ID (PID) und den Dienstnamen und überprüfen Sie dann den Status:
systemctl status service-concerned --no-pager
journalctl -u service-concerne -n 100 --no-pager
Beenden Sie nicht den ersten Prozess in der Liste. Datenbanken nutzen RAM häufig als Anwendungscache und berücksichtigen dabei möglicherweise ihre Konfiguration. Prüfen Sie zunächst, ob der RAM-Verbrauch stabil und erwartungsgemäß ist und bei sinkender Last wieder freigegeben wird.
Wann kann man davon ausgehen, dass tatsächlich ein RAM-Mangel vorliegt?
Ein Gedächtnisverlust wird glaubwürdig, wenn mehrere Signale zusammentreffen: verfügbar bleibt sehr niedrig, vmstat Dies führt zu wiederholten Datenaustauschen, sich verschlechternden Antwortzeiten und schließlich signalisiert der Kernel den OOM-Killer.
journalctl -k -b | grep -Ei 'out of memory|oom-killer|killed process'
dmesg -T | grep -Ei 'out of memory|oom-killer|killed process'
Beheben Sie in diesem Fall die Ursache: falsch eingestelltes Speicherlimit, Speicherlecks, Überlastung oder unzureichende Dimensionierung. Fügen Sie Auslagerungsspeicher nur als Sicherheitsmaßnahme hinzu, nicht als Ersatz für dauerhaft ausgelasteten Arbeitsspeicher. Kostenlose Handbuchseite dokumentiert die Berechnungen seiner Spalten, während proc_meminfo(5) beschreibt die vom Kernel bereitgestellten Zähler.