Linux : découvrir quel processus utilise toute la mémoire vive ?
Avant de demander, juste pour être clair : oui, je connais le cache disque, et non, ce n'est pas mon cas :) Désolé, pour ce préambule :)
j'utilise CentOS 5. Toutes les applications du système échangent beaucoup, et le système est très lent. Quand je fais free -m
, voici ce que j'ai :
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
Donc, je n'ai en fait que 42 Mo à utiliser ! D'après ce que je comprends, -/+ buffers/cache
ne compte pas le cache du disque, donc je n'ai en fait que 42 Mo, n'est-ce pas ? Je me suis dit que je pouvais me tromper, alors j'ai essayé de désactiver le cache disque et cela n'a eu aucun effet - l'image est restée la même.
Alors, j'ai décidé de trouver qui utilisait toute ma RAM, et j'ai utilisé top
pour cela. Mais, apparemment, il rapporte qu'aucun processus n'utilise ma mémoire vive. Le seul processus dans mon top est MySQL, mais il utilise 0,1% de RAM et 400Mb de swap. Même image lorsque j'essaie d'exécuter d'autres services ou applications - tous vont dans le swap, top
montre que le MEM n'est pas utilisé (0,1% maximum pour tout processus).
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 n'aide pas, et, en passant, est très lent, ce à quoi je ne m'attendrais pas normalement sur cette machine (4 cœurs, 4Gb RAM, RAID1).
Donc, avec ça - je suis presque sûr que ce n'est pas un cache disque, qui utilise la mémoire vive, parce que normalement il aurait dû être réduit et laisser d'autres processus utiliser la mémoire vive, plutôt que d'aller à l'échange.
Donc, finalement, la question est - si quelqu'un a une idée de comment trouver quel processus utilise réellement la mémoire si fortement ?