FastNetMon

Показаны сообщения с ярлыком pmap. Показать все сообщения
Показаны сообщения с ярлыком pmap. Показать все сообщения

воскресенье, 25 апреля 2010 г.

Подсчет "чистой памяти", потребляемой процессом (пример на Апаче)

По мотивам: http://prematureoptimization.org/blog/archives/28

В моей интерпретацией он выглядит примерно так:
pidof apache2 | xargs pmap -d | grep '^mapped' | awk '{print $4}' | sed 's/K//' | perl -e 'do { $a+=$_; $b++ } for <>;print $a/1024, " mb\n", $a/1024/$b, " mb\n"'


Выдача его выглядит так:
555.3828125 mb
30.8546006944444 mb


Первая строка означает "настоящее потребление памяти всеми процессами", а вторая означает усредненное на каждый форк значение.

А вот "реальное" использование памяти всеми процессами на сервере:
ps aux | awk '{print $2}' | grep -v 'PID' | xargs pmap -d | grep '^mapped' | awk '{print $4}' | sed 's/K//' | perl -e 'do { $a+=$_; $b++ } for <>;print $a/1024, " mb\n", $a/1024/$b, " mb\n"'


У меня скрипт выдал 5000 мегабайт при вот таких показаниях в top:
Mem: 12328016k total, 11257416k used, 1070600k free, 900536k buffers
Swap: 16779768k total, 233988k used, 16545780k free, 7255084k cached


То есть, 11257416k used - 900536k buffers - 7255084k cached = 3 Гигабайта. Однако. То есть каким-то образом мой скрипт учитывает и страничный кэш (ну не буферы же он приплетает, чесслово).

Также при тесте на VPS скрипт выдал следующие значения:
80.04296875 mb

При следующей выдаче free:
free
total used free shared buffers cached
Mem: 409600 84748 324852 0 0 0
-/+ buffers/cache: 84748 324852
Swap: 0 0 0

Также можно посчитать общий размер памяти, который mapped (то есть общий):
ps aux | awk '{print $2}' | grep -v 'PID' | xargs pmap -d | grep '^mapped' | awk '{print $2}' | sed 's/K//' | perl -e 'do { $a+=$_; $b++ } for <>;print $a/1024, " mb\n", $a/1024/$b, " mb\n"'


Вот отличная статья по сабжу: http://www.opennet.ru/base/sys/pmap_memory.txt.html

Как узнать, чем в процессе занята память?

Командой pmap!

pmap 32513
32513: sshd: root@pts/0
b7848000 1280K rw-s- [ anon ]
b7988000 12K r-x-- /lib/security/pam_limits.so
b798b000 4K rw--- /lib/security/pam_limits.so
b798c000 8K r-x-- /lib/security/pam_mail.so
b798e000 4K rw--- /lib/security/pam_mail.so
b798f000 4K r-x-- /lib/security/pam_motd.so
b7990000 4K rw--- /lib/security/pam_motd.so
b7991000 48K r-x-- /lib/security/pam_unix.so
b799d000 4K rw--- /lib/security/pam_unix.so
b799e000 48K rw--- [ anon ]
b79aa000 12K r-x-- /lib/security/pam_env.so
b79ad000 4K rw--- /lib/security/pam_env.so
b79ae000 16K r-x-- /lib/libnss_dns-2.7.so
b79b2000 8K rw--- /lib/libnss_dns-2.7.so
b79b4000 1280K rw-s- [ anon ]
b7b04000 36K r-x-- /lib/libnss_files-2.7.so
b7b0d000 8K rw--- /lib/libnss_files-2.7.so
b7b0f000 32K r-x-- /lib/libnss_nis-2.7.so
b7b17000 8K rw--- /lib/libnss_nis-2.7.so
b7b19000 28K r-x-- /lib/libnss_compat-2.7.so
b7b20000 8K rw--- /lib/libnss_compat-2.7.so
b7b22000 8K rw--- [ anon ]
b7b24000 80K r-x-- /lib/libpthread-2.7.so
b7b38000 8K rw--- /lib/libpthread-2.7.so
b7b3a000 8K rw--- [ anon ]
b7b3c000 8K r-x-- /lib/libkeyutils-1.2.so
b7b3e000 4K rw--- /lib/libkeyutils-1.2.so
b7b3f000 28K r-x-- /usr/lib/libkrb5support.so.0.1
b7b46000 4K rw--- /usr/lib/libkrb5support.so.0.1
b7b47000 4K rw--- [ anon ]
b7b48000 1248K r-x-- /lib/libc-2.7.so
b7c80000 4K r---- /lib/libc-2.7.so
b7c81000 8K rw--- /lib/libc-2.7.so
b7c83000 12K rw--- [ anon ]
b7c86000 8K r-x-- /lib/libcom_err.so.2.1
b7c88000 4K rw--- /lib/libcom_err.so.2.1
b7c89000 140K r-x-- /usr/lib/libk5crypto.so.3.1
b7cac000 4K rw--- /usr/lib/libk5crypto.so.3.1
b7cad000 584K r-x-- /usr/lib/libkrb5.so.3.3
b7d3f000 8K rw--- /usr/lib/libkrb5.so.3.3
b7d41000 164K r-x-- /usr/lib/libgssapi_krb5.so.2.2
b7d6a000 4K rw--- /usr/lib/libgssapi_krb5.so.2.2
b7d6b000 36K r-x-- /lib/libcrypt-2.7.so
b7d74000 8K rw--- /lib/libcrypt-2.7.so
b7d76000 160K rw--- [ anon ]
b7d9e000 76K r-x-- /lib/libnsl-2.7.so
b7db1000 8K rw--- /lib/libnsl-2.7.so
b7db3000 8K rw--- [ anon ]
b7db5000 80K r-x-- /usr/lib/libz.so.1.2.3.3
b7dc9000 4K rw--- /usr/lib/libz.so.1.2.3.3
b7dca000 8K r-x-- /lib/libutil-2.7.so
b7dcc000 8K rw--- /lib/libutil-2.7.so
b7dce000 1256K r-x-- /usr/lib/i686/cmov/libcrypto.so.0.9.8
b7f08000 88K rw--- /usr/lib/i686/cmov/libcrypto.so.0.9.8
b7f1e000 12K rw--- [ anon ]
b7f21000 60K r-x-- /lib/libresolv-2.7.so
b7f30000 8K rw--- /lib/libresolv-2.7.so
b7f32000 8K rw--- [ anon ]
b7f34000 92K r-x-- /lib/libselinux.so.1
b7f4b000 8K rw--- /lib/libselinux.so.1
b7f4d000 4K rw--- [ anon ]
b7f4e000 8K r-x-- /lib/libdl-2.7.so
b7f50000 8K rw--- /lib/libdl-2.7.so
b7f52000 40K r-x-- /lib/libpam.so.0.81.12
b7f5c000 4K rw--- /lib/libpam.so.0.81.12
b7f5d000 28K r-x-- /lib/libwrap.so.0.7.6
b7f64000 4K rw--- /lib/libwrap.so.0.7.6
b7f66000 4K r-x-- /lib/security/pam_nologin.so
b7f67000 4K rw--- /lib/security/pam_nologin.so
b7f69000 8K rw--- [ anon ]
b7f6b000 104K r-x-- /lib/ld-2.7.so
b7f85000 8K rw--- /lib/ld-2.7.so
b7f87000 424K r-x-- /usr/sbin/sshd
b7ff1000 8K rw--- /usr/sbin/sshd
b7ff3000 20K rw--- [ anon ]
b90b1000 132K rw--- [ anon ]
bfb2b000 84K rw--- [ stack ]
total 8016K


А есть ли что подобное, но с визуализацией на псевдографике?