A seguir estão os usos de memória mysql
e, apache
respectivamente, no meu servidor. De acordo com a saída de pmap
dizer, mysql
está usando cerca de 379M e apache
está usando 277M.
[root@server ~]# pmap 10436 | grep total
total 379564K
[root@server ~]# pmap 10515 | grep total
total 277588K
Comparando isso com a saída de top
, vejo que os valores estão quase correspondentes.
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=....
Agora, esses valores definitivamente não são o uso atual de memória desses dois processos, pois, se fosse, teriam excedido os 512M ram
no meu sistema e entendo o fato de que esses são o tamanho das páginas atribuídas a esses dois processos e não são realmente o tamanho da memória usada ativamente por eles. Agora, quando usamos pmap -x
, vejo uma coluna extra Dirty
que mostra muito menos uso de memória para o processo. Como visto no exemplo mostrado abaixo, o Dirty
coloumn mostra 15M em oposição a 379M no primeiro coloumn. Minha pergunta é: o valor em coloumn Dirty
é a quantidade 'real' de memória usada ativamente por esse processo? Caso contrário, como podemos descobrir o uso real da memória de um processo? Não ps
e top
pelas mesmas razões acima. Temos alguma coisa sob/proc
que vai dar essa informação?
[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 ~]#