/proc/meminfo
Contents
Beispielausgabe
1 # cat /proc/meminfo
2 root: total: used: free: shared: buffers: cached:
3 Mem: 1055760384 1041887232 13873152 0 100417536 711233536
4 Swap: 1077501952 8540160 1068961792
5
6 MemTotal: 1031016 kB
7 MemFree: 13548 kB
8 MemShared: 0 kB
9 Buffers: 98064 kB
10 Cached: 692320 kB
11 SwapCached: 2244 kB
12 Active: 563112 kB
13 Inact_dirty: 309584 kB
14 Inact_clean: 79508 kB
15 Inact_target: 190440 kB
16 HighTotal: 130992 kB
17 HighFree: 1876 kB
18 LowTotal: 900024 kB
19 LowFree: 11672 kB
20 SwapTotal: 1052248 kB
21 SwapFree: 1043908 kB
22 Committed_AS: 332340 kB
Der erste Teil zeigt eine kurze Zusammenfassung der wichtigsten Daten. Danach folgen statistische Angaben auf höheren und niedrigeren Ebenen.
Statistiken auf höherer Ebene
MemTotal: insgesamt nutzbarer Arbeitsspeicher (physischer RAM abzüglich einiger reservierter Bits und dem Kernelcode)
MemFree: die Summe von LowFree + HighFree
MemShared: ist immer 0, den Wert gibts nur aus Kompatiblitätsgründen
- Buffers: Speicher für Puffer-Cache. Heutzutage wenig aussagekräftig
- Cached: Speicher für den Page-Cache (Plattencache) minus Swap-Cache
SwapCached: Speicher, der ausgelagert (swapped out) und bereits wieder eingelesen wurde aber im Swapbereich noch nicht überschrieben ist. Wird freier Speicher benötigt, muss der Speicher im Swap-Cache nicht erst auf Platte geschrieben werden.
Statistiken auf Detailebene
VM Statistiken
Die virtuelle Speicherverwaltung (VM) teilt die Cache-Seiten in "aktiven" and "inaktiven" Speicher. Wenn man Speicher benötigt, für den eine Cache-Seite geopfert werden müsste, wird eine inaktive Seite benutzt, da man davon ausgehen kann, dass diese nicht so schnell benutzt wird. Die VM prüft regelmäßig was benutzt wird und was nicht und schiebt die Sachen entsprechend umher.
- Active: Speicher der in letzter Zeit benutzt wurde und normalerweise nicht ausgelagert wird.
- Inact_dirty: dirty bedeutet, dass IO stattfinden muss, bevor der Speicher freigegebn werden kann.
- Inact_clean: kann leicht freigegeben werden. Der Kernel versucht immer etwas davon zu haben, um Speicherbedarf schnell erfüllen zu können.
- Inact_target: ein Ziel für den Kernel um sicherzustellen, dass genug inaktiver Speicher vorhanden ist.
Memory Statistiken
HighTotal: gesamter Speicher im Highmem-Bereich. Highmem ist der gesamte Speicherbereich über ungefähr 860MB des physischen RAM (betrifft x86 Architekturen). Diesen Speicherbreich kann man nur indirekt ansprechen.
LowTotal: die gesamte Menge an nicht Highmem-RAM.
LowFree: freier Speicher im Lowmem Bereich. Dieser Speicher kann direkt angesprochen werden und alle Kernel Datenstrukturen müssen darin liegen.
SwapTotal: gesamter Auslagerungsspeicher
SwapFree: freier Auslagerungsspeicher
- Committed_AS: eine Abschätzung wieviel RAM man benötigen würde, um mit 99,99%iger Wahrscheinlichkeit zu sagen, dass für diese Nutzlast nie eine OOM (out of memory) Situation auftritt. Normalerweise hält sich der Kernel nicht an die tatsächlich vorhandene Speichermenge. Das heißt, wenn ein Programm z.B. 1GB mittels malloc() reserviert, dann passiert erstmal gar nichts. Erst wenn dieser Speicher tatsächlich benutzt wird, wird auch wirklich physischer Speicher belegt. Committed_AS ist eine grobe Schätzung wieviel RAM+Swap man im schlechtesten Fall benötigt.
Weiterführende Informationen / Quellen
Die Informationen basieren auf redhat.com.
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/de/ref-guide/s1-proc-topfiles.html
linux/Documentation/filesystems/proc.txt
Eine ausführliche Beschreibung der virtuellen Speicherverwaltung von Linux findet sich in Understanding The Linux Virtual Memory Manager.
