Speicher
Die wichtigsten Befehle zum Merken
free -m— sehen, wie viel Speicher dem gesamten System zur Verfügung steht.ps— den Speicher eines einzelnen Prozesses untersuchen.
Befehle und Optionen
Diese beiden Befehle kommen im kurzen Beispiel unten vor.
| Befehl | Bedeutung |
|---|---|
free -m |
RAM und Swap in MiB anzeigen; -m wählt diese Einheit. |
ps -p "$$" -o pid,rss,vsz,comm |
-p wählt einen Prozess; -o bestimmt die Spalten: ID, residenter Speicher, virtuelle Speichergröße und Programmname. RSS und VSZ sind in KiB. |
$$ ist Bash-Syntax, keine Befehlsoption. Es enthält die PID der aktuellen Shell. Damit untersuchen wir einen bereits laufenden Prozess.
Achte auf die Einheiten: 1 KiB entspricht 1.024 Bytes; 1 MiB entspricht 1.024 KiB. Teile die Speicherwerte von ps durch 1.024, um sie in MiB auszudrücken. MiB unterscheidet sich von MB: Ein MB entspricht 1.000.000 Bytes.
Die entscheidenden Konzepte
1. Ein Prozess braucht auch beim Warten Speicher
RAM ist der Arbeitsbereich laufender Programme und des Betriebssystems. Ein Prozess benötigt Speicher für Code, Daten und laufende Aufgaben. Beim Warten auf eine Anfrage wird dieser Speicher nicht automatisch freigegeben.
Deshalb kann auch ein wenig beschäftigter Server viel RAM verwenden. CPU-Aktivität und Speicherbelegung beantworten unterschiedliche Fragen.
2. Virtueller Speicher ist nicht dasselbe wie physischer RAM
Jeder Prozess sieht einen virtuellen Adressraum. Linux verwaltet, wie dessen Adressen mit physischem Speicher und anderen Speicherbereichen verbunden sind. Manche Adressbereiche können reserviert sein, ohne derzeit RAM zu belegen.
Zwei Felder von ps helfen bei der Unterscheidung:
- VSZ — Virtual Memory Size: die Größe des virtuellen Adressraums. Sie entspricht nicht dem RAM-Verbrauch.
- RSS — Resident Set Size: Speicher dieses Prozesses, der sich derzeit im RAM befindet. Gemeinsam genutzte Seiten können in mehreren RSS-Werten auftauchen. Wer alle RSS-Werte addiert, kann sie deshalb mehrfach zählen.
Ein großer VSZ-Wert allein belegt kein Speicherproblem.
3. Verfügbarer Speicher ist wichtiger als vollständig freier Speicher
Linux verwendet ansonsten ungenutzten RAM als Cache, etwa für kürzlich gelesene Dateien. Einen Teil davon kann es zurückgewinnen, wenn Anwendungen Speicher brauchen.
Achte in der Mem-Zeile von free zunächst auf:
total: nutzbarer RAM, den dieses Linux-System sieht.free: derzeit ungenutzter RAM.buff/cache: Puffer und Caches, die teilweise zurückgewonnen werden können.available: geschätzter Speicher, den Anwendungen ohne Auslagern in Swap verwenden könnten.
Ein kleiner free-Wert allein bedeutet keinen Speichermangel. available ist der hilfreichere Ausgangspunkt, um den verbleibenden Spielraum einzuschätzen.
4. Swap bietet zusätzlichen Platz für Speicherinhalte
Linux kann einige Speicherseiten – Blöcke von Speicher – aus dem RAM in Swap verschieben, häufig eine Datei oder Partition auf einem Datenträger. Werden sie benötigt, müssen sie zurück in den RAM. Datenträgerbasierter Swap ist deutlich langsamer als RAM; häufige Transfers können Anwendungen bremsen.
Die Swap-Zeile zeigt eingerichteten, belegten und freien Swap. Bei einer Gesamtgröße von null ist kein Swap eingerichtet. Belegter Swap allein beweist keine aktuelle Überlastung. Swap ist kein Backup der Anwendungsdaten.
Ein kleines Beispiel
Optional: Führe diese beiden Befehle in einem Bash-Terminal unter Linux aus. Administratorrechte sind nicht erforderlich:
free -m
ps -p "$$" -o pid,rss,vsz,comm
Suche zuerst den available-Wert des Systems. Lies anschließend RSS und VSZ deiner Shell; PID identifiziert sie und COMMAND nennt ihren Programmnamen. Deine Messwerte werden variieren. Du vergleichst unterschiedliche Sichtweisen: das gesamte System und einen Prozess sowie MiB und KiB.
Für das Beispiel wird kein zusätzlicher Speicherpuffer angelegt und kein Prozess zurückgelassen. Aufräumen ist nicht erforderlich.
Merke dir: Mit free beurteilst du den Speicherspielraum des Systems, mit ps den Speicher eines Prozesses. Weder ein großer VSZ-Wert noch ein kleiner free-Wert allein beweist einen Engpass.