Нижче наведено використання пам'яті mysql
та apache
відповідно на моєму сервері. Відповідно до результатів, pmap
скажімо, mysql
використовує близько 379M і apache
використовує 277M.
[root@server ~]# pmap 10436 | grep total
total 379564K
[root@server ~]# pmap 10515 | grep total
total 277588K
Порівнюючи це з виходом top
, я бачу, що значення майже відповідають.
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=....
Тепер ці значення, безумовно, не є поточним використанням пам’яті цих двох процесів, оскільки якби це було, то воно перевищило б 512М ram
у моїй системі, і я розумію той факт, що це розмір сторінок, призначених цим двом процесам, а не насправді розмір активно використовуваної ними пам'яті. Тепер, коли ми використовуємо pmap -x
, я бачу додатковий стовпчик, Dirty
який показує набагато менше використання пам'яті для цього процесу. Як видно з прикладу, показаного нижче, Dirty
колона показує 15 М на відміну від 379 М у першій колоні. Моє запитання: Чи є значення під стовпцем Dirty
"реальним" об'ємом пам'яті, активно використовується цим процесом? Якщо його немає, то як ми можемо з'ясувати реальне використання пам'яті процесу? Ні, ps
і top
з тих же причин вище. Чи є у нас щось під/proc
що дасть цю інформацію?
[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 ~]#