Die Speichernutzung unter Linux stimmt nicht

Die Speichernutzung unter Linux stimmt nicht

Ich versuche, die Speichernutzung auf meinem Ubuntu-Server zu überwachen. Wenn ich den Befehl „top“ ausführe, wird angezeigt, dass 70 % des Speichers verwendet werden (angezeigt in der Zeile „Mem:“). Aber ich möchte die Prozesse finden, die meine Speichernutzung nutzen, und diese addieren. Es sind weit von 70 % entfernt. Kann mir das jemand erklären?

Vielen Dank!

Hier ist mein Top-Befehlsergebnis:

oben – 20:59:06, 23 Tage, 33 Minuten, 3 Benutzer, durchschnittliche Auslastung: 0,06, 0,12, 0,09
Aufgaben: 92 insgesamt, 1 läuft, 91 schläft, 0 angehalten, 0 Zombie
CPU(s): 0,3 % us, 0,2 % sy, 0,0 % ni, 99,5 % id, 0,0 % wa, 0,0 % hi, 0,0 % si, 0,0 % st
Speicher: 4124236k gesamt, 2903104k genutzt, 1221132k frei, 147508k Puffer
Swap: 4192252k insgesamt, 440k verwendet, 4191812k frei, 2596860k zwischengespeichert

  PID USER PR NI VIRT RES SHR S %CPU %MEM ZEIT+ BEFEHL
30558 mysql 20 0 311m 36m 5956 S 0 0,9 0:00.74 mysqld
28848 jiechao 20 0 50688 9244 3144 S 0 0,2 0:05,65 Python
  956 root 20 0 11712 8004 2964 S 0 0.2 0:39.26 ddclient - slee
28846 jiechao 20 0 49256 7652 3280 S 0 0,2 0:07.17 Python
22284 jiechao 20 0 10400 6876 1664 S 0 0,2 0:00.49 bash
30433 jiechao 20 0 10344 6776 1620 S 0 0,2 0:00.46 bash
31053 jiechao 20 0 10344 6768 1612 S 0 0,2 0:00.47 bash
28847 jiechao 20 0 48168 6096 2980 S 0 0,1 0:00,59 Python
29178 www-Daten 20 0 228m 5392 2052 S 0 0,1 0:00.06 apache2
29179 www-Daten 20 0 12796 5148 1920 S 0 0,1 0:00.02 apache2
29180 www-Daten 20 0 12796 5148 1920 S 0 0,1 0:00.02 apache2
29181 www-Daten 20 0 12796 5148 1920 S 0 0,1 0:00.02 apache2
29182 www-Daten 20 0 12796 5148 1920 S 0 0,1 0:00.02 apache2
29183 www-Daten 20 0 12796 5148 1920 S 0 0,1 0:00.02 apache2
  999 Wurzel 20 0 11396 3948 2052 S 0 0,1 0:21.21 apache2
  926 hoppla 20 0 24572 3284 2280 S 0 0.1 0:00.18 hoppla
30933 root 20 0 9604 3104 2484 S 0 0.1 0:00.00 sshd
22164 root 20 0 9604 3096 2484 S 0 0.1 0:00.01 sshd
30313 root 20 0 9604 3096 2480 S 0 0,1 0:00.00 sshd
24302 root 20 0 9632 3024 2428 S 0 0.1 0:00.07 sshd
  787 root 20 0 6664 2424 1988 S 0 0.1 0:00.05 sshd
    1 Wurzel 20 0 3504 1876 1276 S 0 0,0 0:01,57 init
24421 jiechao 20 0 9632 1596 992 S 0 0,0 0:00,00 sshd
  812 syslog 20 0 31044 1484 1008 S 0 0,0 1:47,00 rsyslogd

Antwort1

Natürlich ist diese Zahl eine Kombination aus dem vom Prozess verwendeten RAM und den Puffern und dem Cache für Dateien. Linux verfolgt die Philosophie, den RAM für aufgerufene Dateien maximal auszunutzen, anstatt für diese Dateien auf die Festplatte zugreifen zu müssen.

Versuchen Sie entweder, den Befehl zu verwenden freeoder den Kernel selbst über diesen Befehl anzuzeigen.cat /proc/meminfo.

frei

% free
             total       used       free     shared    buffers     cached
Mem:       7987492    7717152     270340          0     314644    2435048
-/+ buffers/cache:    4967460    3020032
Swap:      5963772       1304    5962468

Katze /proc/meminfo

% cat /proc/meminfo 
MemTotal:        7987492 kB
MemFree:          284328 kB
Buffers:          314384 kB
Cached:          2427852 kB
SwapCached:          116 kB
Active:          4698232 kB
Inactive:        2374796 kB
Active(anon):    3756264 kB
Inactive(anon):   768392 kB
Active(file):     941968 kB
Inactive(file):  1606404 kB
Unevictable:          68 kB
Mlocked:              68 kB
SwapTotal:       5963772 kB
SwapFree:        5962468 kB
Dirty:               452 kB
Writeback:             0 kB
AnonPages:       4330964 kB
Mapped:           185540 kB
Shmem:            193864 kB
Slab:             306532 kB
SReclaimable:     261520 kB
SUnreclaim:        45012 kB
KernelStack:        6192 kB
PageTables:        94376 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     9957516 kB
Committed_AS:    9671884 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      585392 kB
VmallocChunk:   34359040964 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       12288 kB
DirectMap2M:     8237056 kB

Der freeBefehl zeigt Ihnen den gesamten RAM, in meinem Fall 7987492, von denen 7717152 verwendet werden und 270340 frei sind. Dies ist eine Kombination aus RAM, Puffern und Cache. Die 2. Zeile zeigt Ihnen, wie viel von diesem RAM von den Puffern und dem Cache verwendet wird, 4967460, was bedeutet, dass ich tatsächlich 3020032 RAM frei habe.

Von einemitworld.com-Artikelzum Sinnvoller Umgang mit der Speichernutzung:

Die Pufferzahl stellt die im Speicher vorhandenen Blöcke dar, die entstehen, wenn der Kernel auf die Festplatte zugreift, z. B. wenn der Kernel den Inhalt von Dateien lesen muss. Die zwischengespeicherte Zahl gibt an, wie viel RAM zum Zwischenspeichern des Inhalts kürzlich gelesener Dateien verwendet wird. Die Pufferzahl erhöht sich, wenn die Dateisystemebene umgangen wird, während der Cache wächst, wenn das Dateisystem verwendet wird. Beide Werte wachsen, wenn die Anzahl der Lesevorgänge zunimmt.

NOTIZ:Bedenken Sie, dass der Speichermanager des Linux-Kernels den gesamten für Puffer und Cache verwendeten RAM freigibt, wenn eine Anwendung ihn tatsächlich benötigt.

Ressourcen

verwandte Informationen