GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Grundlegendes zur /proc/meminfo-Datei (Analyse der Speicherauslastung in Linux)

– Die /proc Dateisystem ist ein Pseudo-Dateisystem. Es existiert nicht auf einer Festplatte. Stattdessen erstellt der Kernel es im Speicher. Es wird verwendet, um Informationen über das System bereitzustellen (ursprünglich über Prozesse, daher der Name).
– Die Datei „/proc/meminfo ' wird von verwendet, um die Menge an freiem und verwendetem Speicher (sowohl physisch als auch ausgelagert) auf dem System sowie den gemeinsam genutzten Speicher und die vom Kernel verwendeten Puffer zu melden.
– Das /proc-Dateisystem wird ausführlicher in beschrieben die Proc-Handbuchseite (man proc).

Beispiel für „cat /proc/meminfo“

Die Ausgabe des Befehls „cat /proc/meminfo“ würde je nach Betriebssystem und Architektur des Servers unterschiedlich sein. Die unten aufgeführten Felder können leicht abweichen oder in Ihrem System nicht vorhanden sein.

# cat /proc/meminfo 
MemTotal:        1882064 kB
MemFree:         1376380 kB
MemAvailable:    1535676 kB
Buffers:            2088 kB
Cached:           292324 kB
SwapCached:            0 kB
Active:           152944 kB
Inactive:         252628 kB
Active(anon):     111328 kB
Inactive(anon):    16508 kB
Active(file):      41616 kB
Inactive(file):   236120 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                40 kB
Writeback:             0 kB
AnonPages:        111180 kB
Mapped:            56396 kB
Shmem:             16676 kB
Slab:              54508 kB
SReclaimable:      25456 kB
SUnreclaim:        29052 kB
KernelStack:        2608 kB
PageTables:         5056 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3038180 kB
Committed_AS:     577664 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       14664 kB
VmallocChunk:   34359717628 kB
HardwareCorrupted:     0 kB
AnonHugePages:     24576 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       69632 kB
DirectMap2M:     2027520 kB

Felder

Die Informationen liegen in Form von hohen und niedrigen Statistiken vor. Oben sehen Sie eine Zusammenfassung der häufigsten Werte, die sich die Leute ansehen möchten. Nachfolgend finden Sie die einzelnen Werte, auf die wir eingehen werden. Wir werden zuerst die High-Statistiken besprechen.

Hochrangige Statistiken

  • MemTotal :Gesamter nutzbarer Arbeitsspeicher (d. h. physischer Arbeitsspeicher abzüglich einiger reservierter Bits und des Kernel-Binärcodes)
  • MemFree :Ist die Summe von LowFree+HighFree (Gesamtstatistik)
  • MemShared :0; steht hier aus Kompatibilitätsgründen aber immer auf Null.
  • Puffer :Speicher im Puffercache. Heutzutage als Metrik meist unbrauchbar. Relativ temporärer Speicher für Raw-Disk-Blöcke sollte nicht enorm groß werden (20 MB oder so)
  • Zwischengespeichert :Speicher im Pagecache (Diskcache) minus SwapCache, beinhaltet nicht SwapCached
  • SwapCache :Speicher, der einmal ausgelagert wurde, wird wieder eingelagert, befindet sich aber auch noch in der Auslagerungsdatei (wenn Speicher benötigt wird, muss er nicht WIEDER ausgelagert werden, da er sich bereits in der Auslagerungsdatei befindet. Dies spart I/O )

Detaillierte Statistiken

1. VM-Statistiken
VM teilt die Cache-Seiten in „aktiven“ und „inaktiven“ Speicher. Die Idee ist, dass Sie, wenn Sie Speicher benötigen und etwas Cache dafür geopfert werden muss, ihn von inaktiv nehmen, da davon ausgegangen wird, dass er nicht verwendet wird. Der VM überprüft regelmäßig, was verwendet wird, und verschiebt Dinge.

Die Statistiken sind:

  • Aktiv :Speicher, der vor kurzem verwendet wurde und normalerweise nicht zurückgefordert wird, es sei denn, es ist absolut notwendig.
  • Inact_dirty :Dirty bedeutet „Möglicherweise muss auf die Festplatte geschrieben oder ausgelagert werden.“ Nimmt mehr Arbeit zum Befreien. Beispiele können Dateien sein, in die noch nicht geschrieben wurde. Sie werden nicht zu früh in den Speicher geschrieben, um die I/O niedrig zu halten. Wenn Sie beispielsweise Protokolle schreiben, ist es möglicherweise besser zu warten, bis Sie ein vollständiges Protokoll fertig haben, bevor Sie es an die Festplatte senden.
  • Inact_clean :Es wird angenommen, dass es leicht freizugeben ist. Der Kernel wird versuchen, immer etwas sauberes Zeug herumzuhalten, um ein bisschen Luft zum Atmen zu haben.
  • Inact_target :Nur eine Zielmetrik, die der Kernel verwendet, um sicherzustellen, dass genügend inaktive Seiten vorhanden sind. Wenn sie überschritten wird, wird der Kernel nicht arbeiten, um Seiten von aktiv nach inaktiv zu verschieben. Eine Seite kann auch auf andere Weise inaktiv werden, z. Wenn Sie eine lange sequentielle I/O ausführen, geht der Kernel davon aus, dass Sie diesen Speicher nicht verwenden werden, und deaktiviert ihn präventiv. Sie können also mehr inaktive Seiten als das Ziel erhalten, da der Kernel einige Caches als „wahrscheinlich nie verwendet“ markiert und ihn in der Reihenfolge „zuletzt verwendet“ cheaten lässt.

2. Speicherstatistik

  • HighTotal :ist die Gesamtspeichermenge im oberen Bereich. Highmem ist der gesamte Speicher über (ca.) 860 MB physischem RAM. Der Kernel verwendet indirekte Tricks, um auf die hohe Speicherregion zuzugreifen. Der Datencache kann in diesen Speicherbereich gehen.
  • LowTotal :Die Gesamtmenge des Nicht-Highmem-Speichers.
  • LowFree :Die Menge an freiem Speicher des Low-Memory-Bereichs. Dies ist der Speicher, den der Kernel direkt ansprechen kann. Alle Kernel-Datenstrukturen müssen in den niedrigen Speicher gehen.
  • SwapTotal :Gesamtmenge des physikalischen Auslagerungsspeichers.
  • SwapFree :Gesamtmenge des freien Auslagerungsspeichers. Speicher, der aus dem RAM entfernt wurde und sich vorübergehend auf der Festplatte befindet
  • Schmutzig :Speicher, der darauf wartet, auf die Platte zurückgeschrieben zu werden
  • Zurückschreiben :Speicher, der aktiv auf die Platte zurückgeschrieben wird
  • Zugeordnet :Dateien, die gemappt wurden, wie z. B. Bibliotheken
  • Platte :Datenstruktur-Cache im Kernel
  • Committed_AS :Eine Schätzung, wie viel RAM Sie benötigen würden, um zu 99,99 % zu garantieren, dass es für diese Workload niemals OOM (out of memory) gibt. Normalerweise überschreibt der Kernel Speicher. Das heißt, wenn Sie beispielsweise einen 1-GB-Malloc ausführen, passiert eigentlich nichts. Nur wenn Sie anfangen, diesen Malloc-Speicher zu VERWENDEN, erhalten Sie bei Bedarf echten Speicher, und zwar so viel, wie Sie verwenden. Sie nehmen also eine Hypothek auf und hoffen, dass die Bank nicht pleite geht. Andere Fälle könnten sein, wenn Sie eine Datei mmapping, die nur freigegeben wird, wenn Sie darauf schreiben, und Sie eine private Kopie dieser Daten erhalten. Während es normalerweise zwischen Prozessen geteilt wird. Committed_AS ist eine Schätzung, wie viel RAM/Swap Sie im schlimmsten Fall benötigen würden.
  • Seitentabellen :Speichermenge, die der niedrigsten Ebene von Seitentabellen gewidmet ist.
  • ReverseMaps :Anzahl der durchgeführten Rückwärtszuordnungen
  • VmallocGesamt :Gesamtgröße des vmalloc-Speicherbereichs
  • VmallocUsed :Menge des verwendeten vmalloc-Bereichs
  • VmallocChunk :größter zusammenhängender Block des vmalloc-Bereichs, der frei ist


Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Linux – Zusammenführen von /usr/bin und /usr/sbin in /bin (gnu/linux)?

  3. Die Datei /etc/xinetd.conf unter Linux verstehen

  4. /etc/hosts-Datei unter Linux verstehen

  5. Verständnis von Linux /proc/id/maps

Grundlegendes zu Linux-Dateiberechtigungen

/dev/null unter Linux

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

Verstehen der /etc/fstab-Datei unter Linux

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

Den Speicher eines Linux-Prozesses in eine Datei ausgeben