Di seguito sono riportati l'utilizzo della memoria mysql
e apache
rispettivamente sul mio server. Come da output di pmap
dire, mysql
sta usando circa 379M e apache
sta usando 277M.
[root@server ~]# pmap 10436 | grep total
total 379564K
[root@server ~]# pmap 10515 | grep total
total 277588K
Confrontando questo con l'output di top
, vedo che i valori sono quasi corrispondenti.
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=....
Ora questi valori sicuramente non sono l'attuale utilizzo della memoria di quei due processi, poiché se così fosse avrebbe superato i 512M ram
sul mio sistema e capisco il fatto che queste sono le dimensioni delle pagine assegnate a questi due processi e non proprio la dimensione della memoria utilizzata attivamente da loro. Ora, quando usiamo pmap -x
, vedo una colonna in più Dirty
che mostra molto meno utilizzo della memoria per il processo. Come mostrato nell'esempio seguente, la Dirty
colonna mostra 15M rispetto a 379M nella prima colonna. La mia domanda è: il valore sotto colonna Dirty
è la quantità "reale" di memoria utilizzata attivamente da quel processo? In caso contrario, come possiamo scoprire l'utilizzo della memoria reale di un processo? Non ps
e top
per le stesse ragioni sopra. Abbiamo qualcosa sotto/proc
che darà queste informazioni?
[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 ~]#