Voici l'utilisation de la mémoire de mysql
et apache
respectivement sur mon serveur. Selon la sortie de pmap
disons, mysql
utilise environ 379M et apache
utilise 277M.
[root@server ~]# pmap 10436 | grep total
total 379564K
[root@server ~]# pmap 10515 | grep total
total 277588K
En comparant cela avec la sortie de top
, je vois que les valeurs correspondent presque.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10515 apache 20 0 271m 32m 3132 S 0.0 6.6 0:00.73 /usr/sbin/httpd
10436 mysql 20 0 370m 21m 6188 S 0.0 4.3 0:06.07 /usr/libexec/mysqld --basedir=....
Maintenant, ces valeurs ne sont certainement pas l'utilisation actuelle de la mémoire de ces deux processus, car si elle avait dépassé les 512 Mo ram
sur mon système et je comprends le fait que ce sont la taille des pages affectées à ces deux processus et pas vraiment la taille de la mémoire qu'ils utilisent activement. Maintenant, lorsque nous utilisons pmap -x
, je vois une colonne supplémentaire Dirty
qui montre beaucoup moins d'utilisation de la mémoire pour le processus. Comme le montre l'exemple ci-dessous, la Dirty
colonne affiche 15 M au lieu de 379 M dans la première colonne. Ma question est: la valeur sous coloumn Dirty
est-elle la «vraie» quantité de mémoire activement utilisée par ce processus? Si ce n'est pas le cas, comment pouvons-nous découvrir l'utilisation réelle de la mémoire d'un processus? Non ps
et top
pour les mêmes raisons que ci-dessus. Avons-nous quelque chose sous/proc
qui donnera cette info?
[root@server ~]# pmap -x 10436 | grep total
total kB 379564 21528 15340
[root@server ~]#
[root@server ~]# free -m
total used free shared buffers cached
Mem: 489 447 41 0 52 214
-/+ buffers/cache: 180 308
Swap: 1023 0 1023
[root@server ~]#