Linux: Finden Sie heraus, welcher Prozess den gesamten Arbeitsspeicher nutzt?
Bevor Sie tatsächlich fragen, nur um das klarzustellen: Ja, ich kenne mich mit Disk-Cache aus, und nein, das ist nicht mein Fall :) Entschuldigung, für diese Präambel :)
Ich benutze CentOS 5. Jede Anwendung im System ist stark ausgelastet, und das System ist sehr langsam. Wenn ich free -m
mache, habe ich folgendes:
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
Also habe ich eigentlich nur 42 Mb zu verwenden! Soweit ich verstanden habe, zählt -/+ buffers/cache
eigentlich nicht den Plattencache, also habe ich tatsächlich nur 42 Mb, richtig? Ich dachte, ich könnte mich irren, also versuchte ich, den Plattencache auszuschalten, aber es hatte keinen Effekt - das Bild blieb dasselbe.
Also beschloss ich, herauszufinden, wer meinen gesamten RAM-Speicher benutzt, und ich benutzte dafür top
. Aber anscheinend wird berichtet, dass kein Prozess meinen RAM-Speicher verwendet. Der einzige Prozess in meinem Kopf ist MySQL, aber er benutzt 0,1% des RAM und 400Mb Swap. Dasselbe Bild, wenn ich versuche, andere Dienste oder Anwendungen laufen zu lassen - alle gehen in Swap, top
zeigt, daß MEM nicht benutzt wird (maximal 0,1% für jeden Prozeß).
top - 15:09:00 up 2:09, 2 users, load average: 0.02, 0.16, 0.11
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4046868k total, 4001368k used, 45500k free, 748k buffers
Swap: 16777208k total, 68840k used, 16708368k free, 16632k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
3214 ntp 15 0 23412 5044 3916 S 0.0 0.1 0:00.00 17m ntpd
2319 root 5 -10 12648 4460 3184 S 0.0 0.1 0:00.00 8188 iscsid
2168 root RT 0 22120 3692 2848 S 0.0 0.1 0:00.00 17m multipathd
5113 mysql 18 0 474m 2356 856 S 0.0 0.1 0:00.11 472m mysqld
4106 root 34 19 251m 1944 1360 S 0.0 0.0 0:00.11 249m yum-updatesd
4109 root 15 0 90152 1904 1772 S 0.0 0.0 0:00.18 86m sshd
5175 root 15 0 90156 1896 1772 S 0.0 0.0 0:00.02 86m sshd
Neustart hilft nicht, und ist übrigens sehr langsam, was ich normalerweise auf dieser Maschine nicht erwarten würde (4 Kerne, 4Gb RAM, RAID1).
Also, damit - ich bin mir ziemlich sicher, daß dies kein Plattencache ist, der das RAM benutzt, denn normalerweise hätte er reduziert werden müssen und anderen Prozessen die Nutzung des RAMs erlauben sollen, anstatt zum Swap zu gehen.
Also, schließlich ist die Frage - ob jemand eine Idee hat, wie man herausfinden kann, welcher Prozeß den Speicher tatsächlich so stark nutzt?