Poniżej przedstawiono użycie pamięci mysql
i apache
odpowiednio na moim serwerze. Jak wynika z pmap
powiedzmy, mysql
używa około 379M i apache
uż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 ram
w 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ę, Dirty
która pokazuje znacznie mniejsze zużycie pamięci dla procesu. Jak widać na poniższym przykładzie, Dirty
kolor pokazuje 15M w przeciwieństwie do 379M w pierwszym kolorze. Moje pytanie brzmi: czy wartością pod kolorem Dirty
jest „prawdziwa” ilość pamięci aktywnie wykorzystywana przez ten proces? Jeśli nie, to jak możemy ustalić faktyczne wykorzystanie pamięci przez proces? Nie ps
i top
z 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 ~]#