Voici l'utilisation de la mémoire de mysqlet apacherespectivement sur mon serveur. Selon la sortie de pmapdisons, mysqlutilise environ 379M et apacheutilise 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 ramsur 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 Dirtyqui montre beaucoup moins d'utilisation de la mémoire pour le processus. Comme le montre l'exemple ci-dessous, la Dirtycolonne affiche 15 M au lieu de 379 M dans la première colonne. Ma question est: la valeur sous coloumn Dirtyest-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 pset toppour 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 ~]#