Im Folgenden sind die Speicherauslastung mysql
und apache
jeweils auf meinem Server. Gemäß der Ausgabe von pmap
sagen wir, mysql
wird unter Verwendung von etwa 379m und apache
ist 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 ram
auf 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, Dirty
die deutlich weniger Speicherbedarf für den Prozess anzeigt. Wie im folgenden Beispiel zu sehen ist, Dirty
zeigt die Spalte 15 M im Gegensatz zu 379 M in der ersten Spalte. Meine Frage ist: Ist der Wert in der Spalte Dirty
die "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 ps
und top
aus 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 ~]#