Linux: ¿averiguar qué proceso está usando toda la RAM?
Antes de preguntar, para ser claros: sí, sé sobre el caché de disco, y no, no es mi caso :) Lo siento, por este preámbulo :)
Estoy usando CentOS 5. Todas las aplicaciones del sistema están intercambiando mucho, y el sistema es muy lento. Cuando hago free -m
, esto es lo que tengo:
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
Así que, en realidad sólo tengo 42 Mb para usar! Por lo que entiendo, -/+ buffers/cache
no cuenta el caché del disco, así que sólo tengo 42 Mb, ¿verdad? Pensé que podría estar equivocado, así que intenté apagar el caché de disco y no tuvo ningún efecto, la imagen permaneció igual.
Así que decidí averiguar quién está usando toda mi RAM, y usé top
para eso. Pero, aparentemente, informa que ningún proceso está usando mi RAM. El único proceso en mi top es MySQL, pero está usando el 0.1% de RAM y 400Mb de swap. La misma imagen cuando trato de ejecutar otros servicios o aplicaciones - todos van en swap, top
muestra que el MEM no se usa (0.1% máximo para cualquier proceso).
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
El reinicio no ayuda, y, por cierto es muy lento, lo que normalmente no esperaría en esta máquina (4 núcleos, 4Gb de RAM, RAID1).
Así que, con eso - estoy bastante seguro de que esto no es un caché de disco, que está usando la RAM, porque normalmente debería haberse reducido y dejar que otros procesos usen la RAM, en lugar de ir a swap.
Así que, finalmente, la pregunta es - si alguien tiene alguna idea de cómo averiguar qué proceso está usando realmente la memoria tan intensamente?