Linux: descubra que processo está a utilizar toda a RAM?
Antes de perguntar, só para ser claro: sim, eu sei sobre cache de disco, e não, não é o meu caso :) Desculpe, para este preâmbulo :)
estou a usar o CentOS 5. Todas as aplicações do sistema estão a trocar muito, e o sistema é muito lento. Quando faço free -m
, aqui está o que tenho:
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
Então, na verdade, só tenho 42 Mb para usar! Tanto quanto sei, o -/+ buffers/cache
não conta a cache do disco, por isso, na verdade, só tenho 42 Mb, certo? Pensei, posso estar errado, por isso tentei desligar o cache do disco e não teve qualquer efeito - a imagem permaneceu a mesma.
Então, decidi descobrir quem está a usar toda a minha RAM, e usei o top
para isso. Mas, ao que parece, o relatório refere que nenhum processo está a utilizar a minha RAM. O único processo no meu topo é o MySQL, mas está a usar 0.1% da RAM e 400Mb de swap. A mesma imagem quando tento correr outros serviços ou aplicações - todos vão em swap, top
mostra que o MEM não é utilizado (0.1% máximo para qualquer processo).
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
Reiniciar não ajuda, e, por sinal é muito lento, o que eu normalmente não esperaria nesta máquina (4 núcleos, 4Gb de RAM, RAID1).
Então, com isso - tenho quase a certeza que isto não é uma cache de disco, quem está a usar a RAM, porque normalmente deveria ter sido reduzida e deixar outros processos usarem a RAM, em vez de ir para a troca.
Então, finalmente, a questão é - se alguém tem alguma ideia de como descobrir que processo está realmente a usar a memória tão intensamente?