Im Folgenden sind die Speicherauslastung mysqlund apachejeweils auf meinem Server. Gemäß der Ausgabe von pmapsagen wir, mysqlwird unter Verwendung von etwa 379m und apacheist mit 277m.
[root@server ~]# pmap 10436 | grep total
total 379564K
[root@server ~]# pmap 10515 | grep total
total 277588K
Vergleicht man dies mit der Ausgabe von top, sehe ich, dass die Werte fast übereinstimmen.
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=....
Nun, diese Werte sind definitiv nicht die aktuelle Speicherauslastung dieser beiden Prozesse, da sie ansonsten die 512 MB ramauf meinem System überschritten hätten und ich die Tatsache verstehe, dass dies die Größe der Seiten ist, die diesen beiden Prozessen zugewiesen sind und nicht wirklich die Größe des von ihnen aktiv genutzten Speichers. Wenn wir jetzt verwenden pmap -x, sehe ich eine zusätzliche Spalte, Dirtydie deutlich weniger Speicherbedarf für den Prozess anzeigt. Wie im folgenden Beispiel zu sehen ist, Dirtyzeigt die Spalte 15 M im Gegensatz zu 379 M in der ersten Spalte. Meine Frage ist: Ist der Wert in der Spalte Dirtydie "tatsächliche" Menge an Speicher, die von diesem Prozess aktiv verwendet wird? Wenn dies nicht der Fall ist, wie können wir dann die tatsächliche Speichernutzung eines Prozesses ermitteln? Nicht psund topaus den oben genannten Gründen. Haben wir etwas unter/proc das wird diese Info geben?
[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 ~]#