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

Korrekte Bestimmung der Speichernutzung in Linux

Meine Antwort von Serverfault neulich schamlos kopieren/einfügen :-)

Das virtuelle Speichersystem von Linux ist nicht ganz so einfach. Sie können nicht einfach alle RSS-Felder addieren und den gemeldeten Wert used erhalten bis free . Dafür gibt es viele Gründe, aber ich werde ein paar der wichtigsten hervorheben.

  • Wenn sich ein Prozess verzweigt, werden sowohl der übergeordnete als auch der untergeordnete Prozess mit demselben RSS angezeigt. Linux verwendet jedoch Copy-on-Write, sodass beide Prozesse wirklich denselben Speicher verwenden. Nur wenn einer der Prozesse den Speicher verändert, wird er tatsächlich dupliziert.
    Dies wird den free verursachen kleiner sein als top RSS-Summe.

  • Der RSS-Wert enthält keinen gemeinsam genutzten Speicher. Da Shared Memory keinem Prozess gehört, top nimmt es nicht in RSS auf.
    Dies wird den free verursachen größer als top sein RSS-Summe.


Wenn Sie nach Gedächtniszahlen suchen, die sich summieren, schauen Sie sich smem an:

smem ist ein Tool, das zahlreiche Berichte über die Speichernutzung auf Linux-Systemen liefern kann. Im Gegensatz zu bestehenden Tools kann smem die proportionale Satzgröße (PSS) melden, was eine aussagekräftigere Darstellung der Speichermenge ist, die von Bibliotheken und Anwendungen in einem virtuellen Speichersystem verwendet wird.

Da große Teile des physischen Speichers normalerweise von mehreren Anwendungen gemeinsam genutzt werden, überschätzt das Standardmaß der Speichernutzung, das als Resident Set Size (RSS) bekannt ist, die Speichernutzung erheblich. PSS misst stattdessen den "fairen Anteil" jeder Anwendung an jedem gemeinsam genutzten Bereich, um ein realistisches Maß zu erhalten.

Zum Beispiel hier:

# smem -t
  PID User     Command                         Swap      USS      PSS      RSS
...
10593 root     /usr/lib/chromium-browser/c        0    22868    26439    49364 
11500 root     /usr/lib/chromium-browser/c        0    22612    26486    49732 
10474 browser  /usr/lib/chromium-browser/c        0    39232    43806    61560 
 7777 user     /usr/lib/thunderbird/thunde        0    89652    91118   102756 
-------------------------------------------------------------------------------
  118 4                                       40364   594228   653873  1153092 

Also PSS ist die interessante Spalte hier, weil sie Shared Memory berücksichtigt.
Im Gegensatz zu RSS es ist sinnvoll, es zu addieren. Wir erhalten hier insgesamt 654 MB für Userland-Prozesse.

Über den Rest informiert die systemweite Ausgabe:

# smem -tw
Area                           Used      Cache   Noncache 
firmware/hardware                 0          0          0 
kernel image                      0          0          0 
kernel dynamic memory        345784     297092      48692 
userspace memory             654056     181076     472980 
free memory                   15828      15828          0 
----------------------------------------------------------
                            1015668     493996     521672 

Also 1 GB RAM insgesamt =654 MB Userland-Prozesse + 346 MB Kernelspeicher + 16 MB kostenlos
(geben oder nehmen Sie ein paar MB)

Insgesamt wird etwa die Hälfte des Speichers für den Cache verwendet (494 MB).

Bonusfrage :Was ist hier Userland-Cache vs. Kernel-Cache?

btw für etwas visuelles versuchen:

# smem  --pie=name


Ein wirklich gutes Werkzeug ist pmap die die aktuelle Speichernutzung für einen bestimmten Prozess auflisten:

pmap -d PID

Weitere Informationen dazu finden Sie auf der Manpage man pmap und werfen Sie auch einen Blick auf 20 Linux-Systemüberwachungstools, die jeder Systemadministrator kennen sollte, die großartige Tools auflisten, die ich immer verwende, um Informationen über meine Linux-Box zu erhalten.


Linux
  1. Linux – Echte Speichernutzung?

  2. Linux – Speichernutzung unter Linux richtig ermitteln?

  3. Linux-df-Befehl

  4. Begrenzung der Prozessspeicher-/CPU-Nutzung unter Linux

  5. So ermitteln Sie die Benutzerspeichernutzung in Linux

So überprüfen Sie die Speichernutzung in Linux

Linux Free Command (Speichernutzung prüfen)

CPU-Auslastung und Speicherauslastung eines einzelnen Prozesses unter Linux abrufen?

Begrenzung der Speichernutzung in R unter Linux

Inaktiver Linux-Speicher

Grafische Darstellung der Prozessspeichernutzung unter Linux