Solaris에서 pmap을 이용하여 백그라운드 프로세스 메모리 크기 알아내는 방법입니다.
1. 메모리 사이즈를 알기 원하는 백그라운드 프로세스의 PID를 알아 냅니다.
% ps -ef |grep V815 (where V815 is the SID of the Oracle Database)
oracle 12252 1 0 18:28:09 ? 0:00 ora_arc0_V815
oracle 12250 1 0 18:28:09 ? 0:00 ora_snp0_V815
oracle 12248 1 0 18:28:09 ? 0:00 ora_reco_V815
oracle 12244 1 0 18:28:09 ? 2:49 ora_ckpt_V815
oracle 12242 1 0 18:28:09 ? 0:00 ora_lgwr_V815
oracle 12238 1 0 18:28:08 ? 0:00 ora_pmon_V815
oracle 12246 1 0 18:28:09 ? 0:00 ora_smon_V815 <<<======
oracle 12240 1 0 18:28:09 ? 0:00 ora_dbw0_V815
jhunter 12694 12619 0 07:51:00 pts/3 0:00 grep V815
2. pmap 명령을 실행 하면서 알아낸 PID를 매개변수로 이용 합니다. (위의 예에서 smon을 대상으로 메모리를 알아 내려고 한다고 가정 하겠습니다.)
% /usr/proc/bin/pmap 12246 (12246 is the PID for the SMON process)
12246: ora_smon_V815
00010000 22800K read/exec /app/oracle/product/8.1.5/bin/oracle
01662000 448K read/write/exec /app/oracle/product/8.1.5/bin/oracle
016D2000 112K read/write/exec [ heap ]
*******************************************************************************
80000000 127672K read/write/exec/shared [ shmid=0x193 ] **This is the size of the SGA
*******************************************************************************
EE140000 40K read/write/shared dev:32,96 ino:570352
EE150000 120K read/write/shared dev:32,96 ino:570354
EE180000 1040K read/write/shared dev:32,96 ino:570353
EE2A0000 16K read/exec /usr/platform/sun4u/lib/libc_psr.so.1
EE2B0000 16K read/exec /usr/lib/libmp.so.2
EE2C2000 8K read/write/exec /usr/lib/libmp.so.2
EE2D0000 88K read/exec /usr/lib/libm.so.1
EE2F4000 8K read/write/exec /usr/lib/libm.so.1
EE300000 592K read/exec /usr/lib/libc.so.1
EE3A2000 32K read/write/exec /usr/lib/libc.so.1
EE3AA000 8K read/write/exec [ anon ]
EE3C0000 8K read/exec /usr/lib/libkstat.so.1
EE3D0000 8K read/write/exec /usr/lib/libkstat.so.1
EE3E0000 24K read/exec /usr/lib/libposix4.so.1
EE3F4000 8K read/write/exec /usr/lib/libposix4.so.1
EE400000 18472K read/exec /app/oracle/product/8.1.5/lib/libjox8.so
EF618000 80K read/write/exec /app/oracle/product/8.1.5/lib/libjox8.so
EF62C000 8K read/write/exec [ anon ]
EF640000 24K read/exec /usr/lib/libaio.so.1
EF654000 16K read/write/exec /usr/lib/libaio.so.1
EF660000 8K read/exec /usr/lib/libsched.so.1
EF670000 8K read/write/exec /usr/lib/libsched.so.1
EF680000 448K read/exec /usr/lib/libnsl.so.1
EF6FE000 40K read/write/exec /usr/lib/libnsl.so.1
EF708000 24K read/write/exec [ anon ]
EF720000 8K read/write/exec [ anon ]
EF730000 8K read/write/exec/shared [ anon ]
EF740000 32K read/exec /usr/lib/libsocket.so.1
EF756000 8K read/write/exec /usr/lib/libsocket.so.1
EF758000 8K read/write/exec [ anon ]
EF760000 32K read/exec /app/oracle/product/8.1.5/lib/libdsbtsh8.so
EF776000 8K read/write/exec /app/oracle/product/8.1.5/lib/libdsbtsh8.so
EF778000 8K read/write/exec [ anon ]
EF780000 8K read/exec /app/oracle/product/8.1.5/lib/libskgxp8.so
EF790000 8K read/write/exec /app/oracle/product/8.1.5/lib/libskgxp8.so
EF7A0000 8K read/exec /usr/lib/libdl.so.1
EF7B0000 8K read/write/exec [ anon ]
EF7C0000 120K read/exec /usr/lib/ld.so.1
EF7EC000 8K read/write/exec /usr/lib/ld.so.1
EFFFA000 24K read/write/exec [ stack ]
total 172472K
3. 세번째 할 일은 total size인 172472K에서 위에서 “shmid=”로 나타나는 값을 뺍니다. 즉 172472K – 127672K 한 값인 44800K가 SMON의 Process의 대략적인 메모리 사용량이 되는 것입니다.