PURPOSE
-------
This document will show how to determine the memory used by each
Oracle background process on a Solaris operating system.
SCOPE & APPLICATION
-------------------
This can be used by anyone who has privileges for the /usr/proc/bin/pmap
command.
Using PMAP to determine the memory size of background processes
---------------------------------------------------------------
First, to determine the memory size, the process id (PID) of the
Oracle background process must be found.
This is done by issuing the following command:
% ps -ef |grep V816UTF8 (where V816UTF8 is the SID of the Oracle Database)
usupport 23891 1 0 Apr 17 ? 2:45 ora_ckpt_V816UTF8
usupport 23887 1 0 Apr 17 ? 0:02 ora_dbw0_V816UTF8
usupport 23893 1 0 Apr 17 ? 1:39 ora_smon_V816UTF8
usupport 23889 1 0 Apr 17 ? 0:06 ora_lgwr_V816UTF8
usupport 136 1 0 Apr 18 ? 1:24 oracleV816UTF8 (DESCRIPTION=(LOCA
L=YES)(ADDRESS=(PROTOCOL=beq)))
usupport 23895 1 0 Apr 17 ? 0:12 ora_reco_V816UTF8
usupport 23885 1 0 Apr 17 ? 0:58 ora_pmon_V816UTF8
usupport 11787 1 0 Apr 25 ? 0:01 oracleV816UTF8 (DESCRIPTION=(LOCA
L=YES)(ADDRESS=(PROTOCOL=beq)))
usupport 2788 1 0 Apr 23 ? 0:32 oracleV816UTF8 (DESCRIPTION=(LOCA
L=YES)(ADDRESS=(PROTOCOL=beq)))
usupport 15550 13813 0 18:02:41 pts/103 0:00 grep V816UTF8
Second, enter the following command:
%/usr/proc/bin> ./pmap -x 23893 (23893 is the PID for the SMON process)
Address Kbytes Resident Shared Private Permissions Mapped File
00010000 24648 1056 392 664 read/exec oracle
01830000 232 56 32 24 read/write/exec oracle
0186A000 216 - - - read/write/exec [ heap ]
80000000 88336 88336 88336 - read/write/exec/shared [shmid=0x4b1]
EEDE0000 16 16 16 - read/exec libmp.so.2
EEDF2000 8 8 8 - read/write/exec libmp.so.2
EEE00000 592 568 568 - read/exec libc.so.1
EEEA2000 32 32 8 24 read/write/exec libc.so.1
EEEAA000 8 - - - read/write/exec [ anon ]
EEED0000 112 32 32 - read/exec libelf.so.1
EEEFA000 8 8 8 - read/write/exec libelf.so.1
EEF00000 456 320 320 - read/exec libnsl.so.1
EEF80000 40 40 8 32 read/write/exec libnsl.so.1
EEF8A000 16 - - - read/write/exec [ anon ]
EEFA0000 16 16 16 - read/exec libc_psr.so.1
EEFB0000 16 16 16 - read/exec libkvm.so.1
EEFC2000 16 16 8 8 read/write/exec libkvm.so.1
EEFD0000 88 88 88 - read/exec libm.so.1
EEFF4000 8 8 8 - read/write/exec libm.so.1
EF000000 4872 24 24 - read/exec libjox8.so
EF4D0000 176 - - - read/write/exec libjox8.so
EF4FC000 16 - - - read/write/exec [ anon ]
EF510000 8 - - - read/write/exec [ anon ]
EF520000 8 8 8 - read/exec libkstat.so.1
EF530000 8 8 8 - read/write/exec libkstat.so.1
EF540000 24 24 24 - read/exec libposix4.so.1
EF554000 8 8 8 - read/write/exec libposix4.so.1
EF560000 24 24 24 - read/exec libaio.so.1
EF574000 16 16 8 8 read/write/exec libaio.so.1
EF580000 912 - - - read/exec liblsm.so
EF672000 48 - - - read/write/exec liblsm.so
EF67E000 504 - - - read/write/exec [ anon ]
EF710000 8 8 8 - read/exec libsched.so.1
EF720000 8 8 8 - read/write/exec libsched.so.1
EF730000 8 8 8 - read/write/exec/shared [ anon ]
EF740000 32 32 32 - read/exec libsocket.so.1
EF756000 8 8 8 - read/write/exec libsocket.so.1
EF758000 8 - - - read/write/exec [ anon ]
EF760000 8 - - - read/write/exec [ anon ]
EF770000 8 - - - read/exec libwtc8.so
EF780000 8 - - - read/write/exec libwtc8.so
EF790000 8 - - - read/exec libskgxp8.so
EF7A0000 8 - - - read/write/exec libskgxp8.so
EF7B0000 8 8 8 - read/exec libdl.so.1
EF7C0000 128 128 128 - read/exec ld.so.1
EF7EE000 16 16 8 8 read/write/exec ld.so.1
EFFF4000 48 - - - read/write/exec [ stack ]
-------- ------ ------ ------ ------
total Kb 121800 90944 90176 768
The shared memory of this SMON process is 90176K minus the SGA size
which is the line marked with 'shmid=' above. In this case it is 88336K.
The calculation is as follows: 90176K minus 88336K is 1840K. So, the process
memory for SMON is 1840K.
This can be done for all the background processes
|