FastNetMon

Showing posts with label pmap. Show all posts
Showing posts with label pmap. Show all posts

Sunday, 25 April 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


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