pmap 및 메모리 사용량

pmap 및 메모리 사용량

Ubuntu 12.04에는 여러 apache2 프로세스(1130 상위 프로세스 및 생성된 하위 프로세스)가 실행되고 있으며, 보시다시피 가상 메모리는 약 300-400MB이고 상주 메모리는 10MB입니다.

$ ps aux | grep apache2
root      1130  0.0  0.1 149080 10600 ?        Ss   Jul11   0:03 /usr/sbin/apache2 -k start
www-data 23440  0.0  0.3 163660 24096 ?        S    10:46   0:01 /usr/sbin/apache2 -k start
www-data 27349  0.0  0.3 163380 23768 ?        S    13:16   0:01 /usr/sbin/apache2 -k start
www-data 27949  0.0  0.3 163912 24300 ?        S    13:36   0:01 /usr/sbin/apache2 -k start
www-data 28568  0.0  0.3 161496 22852 ?        S    14:15   0:00 /usr/sbin/apache2 -k start
www-data 28622  0.0  0.3 163656 23924 ?        S    14:18   0:00 /usr/sbin/apache2 -k start
www-data 28874  0.0  0.3 163600 23636 ?        S    14:33   0:00 /usr/sbin/apache2 -k start
www-data 28881  0.0  0.1 149368  7840 ?        S    14:33   0:00 /usr/sbin/apache2 -k start
www-data 28884  0.0  0.2 152856 12768 ?        S    14:33   0:00 /usr/sbin/apache2 -k start
www-data 29459  0.0  0.1 149368  7788 ?        S    15:07   0:00 /usr/sbin/apache2 -k start
www-data 29531  0.0  0.1 149184  7256 ?        S    15:10   0:00 /usr/sbin/apache2 -k start
1000     29543  0.0  0.0   8112   900 pts/0    S+   15:11   0:00 grep apache2

메모리 사용량을 측정하기 위해 가상 메모리와 상주 메모리를 사용할 때의 문제점은 많은 프로세스가 공유 라이브러리를 사용할 수 있으므로 해당 프로세스의 개별 메모리 사용량이 정확하지 않을 수 있다는 것입니다. 따라서 pmap이 대신 사용되는 경우가 많습니다. pmap은 공유 라이브러리를 제외하고 해당 프로세스의 증분 비용으로 생각할 수 있는 프로세스의 "쓰기 가능/개인" 총계를 제공합니다.

그래서 저는 23440이라는 특정 프로세스를 선택하여 메모리 사용량을 알아내려고 합니다.

$ pmap -d 23440
23440:   /usr/sbin/apache2 -k start
Address           Kbytes Mode  Offset           Device    Mapping
mapped: 0K    writeable/private: 0K    shared: 0K

글쎄, 그것은 나에게 아무 것도 말해주지 않습니다. 무슨 일이야?

답변1

이 명령을 사용하려면 루트이거나 프로세스가 속한 사용자여야 합니다. 이 시도:

$ sudo pmap -d 23440

예를 들어

$ sudo pmap -d 1457
1457:   /usr/sbin/httpd
Address           Kbytes Mode  Offset           Device    Mapping
00007ff9f23bf000      76 r-x-- 0000000000000000 0fd:00000 zip.so
00007ff9f23d2000    2044 ----- 0000000000013000 0fd:00000 zip.so
00007ff9f25d1000       8 rw--- 0000000000012000 0fd:00000 zip.so
00007ff9f25d3000      12 r-x-- 0000000000000000 0fd:00000 libgpg-error.so.0.5.0
00007ff9f25d6000    2044 ----- 0000000000003000 0fd:00000 libgpg-error.so.0.5.0
00007ff9f27d5000       4 rw--- 0000000000002000 0fd:00000 libgpg-error.so.0.5.0
...
...
00007fff70db1000      84 rw--- 0000000000000000 000:00000   [ stack ]
00007fff70dff000       4 r-x-- 0000000000000000 000:00000   [ anon ]
ffffffffff600000       4 r-x-- 0000000000000000 000:00000   [ anon ]
mapped: 290336K    writeable/private: 6288K    shared: 580K

관련 정보