Linux: zoek uit welk proces alle RAM gebruikt?
Voor de duidelijkheid: ja, ik weet van disk cache, en nee, het is niet mijn zaak :) Sorry, voor deze preambule :)
gebruik ik CentOS 5. Elke toepassing in het systeem is zwaar aan het ruilen, en het systeem is erg traag. Als ik free -m
doe, is dit wat ik heb:
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
Dus, ik heb eigenlijk maar 42 Mb om te gebruiken! Voor zover ik het begrijp, telt -/+ buffers/cache
eigenlijk niet de disk cache, dus ik heb inderdaad maar 42 Mb, toch? Ik dacht dat ik het misschien mis had, dus ik probeerde de disk caching uit te schakelen en het had geen effect - het beeld bleef hetzelfde.
Dus besloot ik uit te zoeken wie al mijn RAM gebruikt, en daar gebruikte ik top
voor. Maar, blijkbaar, het meldt dat er geen proces is met behulp van mijn RAM. Het enige proces in mijn top is MySQL, maar het gebruikt 0,1% van het RAM en 400Mb van de swap. Hetzelfde beeld als ik andere diensten of applicaties probeer te draaien - ze gaan allemaal in swap, top
laat zien dat MEM niet gebruikt wordt (0.1% maximum voor elk proces).
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 helpt niet, en is trouwens zeer langzaam, wat ik normaal gesproken niet zou verwachten op deze machine (4 kernen, 4Gb RAM, RAID1).
Dus, daarmee - ik ben er vrij zeker van dat dit geen schijfcache is, die de RAM gebruikt, want normaal gesproken had het gereduceerd moeten worden en andere processen RAM moeten laten gebruiken, in plaats van te gaan ruilen.
Dus, ten slotte, de vraag is - als iemand enig idee heeft hoe hij erachter kan komen welk proces eigenlijk zo zwaar gebruik maakt van het geheugen?