Linux: dowiedz się jaki proces wykorzystuje całą pamięć RAM?
Zanim zapytam, żeby było jasne: tak, wiem o pamięci podręcznej dysku, i nie, to nie jest mój przypadek :) Przepraszam, za tę preambułę :)
Używam CentOS 5. Każda aplikacja w systemie mocno się zamienia, a system jest bardzo wolny. Kiedy robię free -m
, oto co mam:
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
Więc, tak naprawdę mam tylko 42 Mb do wykorzystania! O ile dobrze rozumiem, -/+ buffers/cache
właściwie nie liczy pamięci podręcznej dysku, więc rzeczywiście mam tylko 42 Mb, prawda? Pomyślałem, że mogę się mylić, więc próbowałem wyłączyć cache'owanie dysku i nie przyniosło to żadnego efektu - obrazek pozostał ten sam.
Więc postanowiłem dowiedzieć się, kto używa całej mojej pamięci RAM i użyłem do tego top
. Ale najwyraźniej informuje, że żaden proces nie wykorzystuje mojej pamięci RAM. Jedynym procesem w mojej górnej części jest MySQL, ale używa 0,1% pamięci RAM i 400Mb swap. Ten sam obrazek, gdy staram się uruchomić inne usługi lub aplikacje - wszystkie iść w swap, top
pokazuje, że MEM nie jest używany (0,1% maksymalnie dla każdego procesu).
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
Restart nie pomaga, a przy okazji jest bardzo powolny, którego normalnie nie spodziewałabym się na tej maszynie (4 rdzenie, 4Gb RAM, RAID1).
Więc z tym - jestem całkiem pewien, że to nie jest pamięć podręczna dysku, kto korzysta z pamięci RAM, bo normalnie powinna być zredukowana i pozwolić innym procesom korzystać z pamięci RAM, a nie iść do wymiany.
Więc w końcu pytanie jest - jeśli ktoś ma jakieś pomysły, jak dowiedzieć się, jaki proces jest rzeczywiście wykorzystanie pamięci tak mocno?