Poniżej przedstawiono użycie pamięci mysqli apacheodpowiednio na moim serwerze. Jak wynika z pmappowiedzmy, mysqlużywa około 379M i apacheużywa 277M.
[root@server ~]# pmap 10436 | grep total
total 379564K
[root@server ~]# pmap 10515 | grep total
total 277588K
Porównując to z wynikiem top, widzę, że wartości są prawie takie same.
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=....
Teraz te wartości zdecydowanie nie są bieżącym wykorzystaniem pamięci przez te dwa procesy, ponieważ gdyby tak było, przekroczyłoby 512 MB ramw moim systemie i rozumiem fakt, że są to rozmiary stron przypisanych do tych dwóch procesów, a nie tak naprawdę rozmiar aktywnie wykorzystywanej przez nich pamięci. Teraz, gdy używamy pmap -x, widzę dodatkową barwę, Dirtyktóra pokazuje znacznie mniejsze zużycie pamięci dla procesu. Jak widać na poniższym przykładzie, Dirtykolor pokazuje 15M w przeciwieństwie do 379M w pierwszym kolorze. Moje pytanie brzmi: czy wartością pod kolorem Dirtyjest „prawdziwa” ilość pamięci aktywnie wykorzystywana przez ten proces? Jeśli nie, to jak możemy ustalić faktyczne wykorzystanie pamięci przez proces? Nie psi topz tych samych powodów powyższych. Czy mamy coś poniżej/proc które podadzą te informacje?
[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 ~]#