Des fois on a son serveur qui swap à mort, tout ralentie, votre site vaut plus rien, vous êtes désespéré, c’est la faute à tout le monde sauf vous, etc… Sauf que vous avez fait un script qui check rien du tout, qui lance des process externes qui buguent 2 fois sur 3, votre script tout pourri a alors bouffé toute la RAM, ne laissant rien aux autres process, le système swap à mort, c’est le drame…
Avec pmap vous pouvez connaitre la mémoire utilisée par un process, très pratique pour dénicher qui consomme et remonter à la source.
Un petit ps aux pour connaitre l’id de votre process à espionner ou à défaut un htop:
ps aux | grep redis redis 23777 0.1 6.8 72480 70708 ? Ss 01:15 0:03 /usr/sbin/redis-server /etc/redis.conf |
Ensuite on passe l’ID à pmap:
pmap 23777 23777: /usr/sbin/redis-server /etc/redis.conf 0089a000 108K r-x-- /lib/ld-2.5.so ... bf9d5000 84K rw--- [ stack ] total 72476K |
Redis occupe 72Mo de RAM. Dans mon cas c’est normal, celà correspond à mes valeurs de config.
Hyper pratique. Si vous êtes une grosse feignasse comme moi, faites un one liner: pmap $(ps aux | grep redis-server | grep -v grep | awk ‘{ print $2 }’)
Ou alors une petite fonction dans le .bashrc:
function get_memory() {
pmap $(ps aux | grep $1 | grep -v grep | awk ‘{ print $2 }’)
}
Marrant, on retrouve exactement le nombre affiché avec “ps -ef” ..
ps -ef | grep ipdb
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
john 22534 6.7 0.6 149780 27120 pts/29 Sl+ 11:00 0:00 /usr/bin/python /usr/local/bin/ipdb p65
pmap 22534|tail -1
total 149780K
..C’est pas dingue, ça ?..
:)