Ниже приведены данные об использовании памяти 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=....
Теперь эти значения определенно не являются текущим использованием памяти этими двумя процессами, поскольку, если бы это было так, это превысило бы 512M ram
в моей системе, и я понимаю тот факт, что это размер страниц, назначенных этим двум процессам, а не Размер памяти активно используется ими. Теперь, когда мы используем pmap -x
, я вижу дополнительную колонку, Dirty
которая показывает гораздо меньшее использование памяти для процесса. Как видно из приведенного ниже примера, Dirty
столбец показывает 15M, а не 379M в первом столбце. Мой вопрос: является ли значение в столбце 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 ~]#