Hi

SITUATION - On a production APP Server having about 4000 Concurrent application 
processes , 
the memory allocated does NOT seem to be getting freed even though the application 
program is issuing the respective call to Free the memory .

Qs Any /etc/system parameters , OS patches which should help ?

Qs Is our approach of using the pmap command Correct ? 
else what Command to find the "Private" memory taken up by a process would be 
advisable ?

Qs How to find the Total Amount of Swap Consumed  ?
[ We probably do NOT know how to interpret the vmstat output Correctly ,
top/swap -s commands show an output Differing greatly from df -k output for /tmp 
filesystem ]

Qs Any Body has encountered such as situation before ? 


Configuration - 
Solaris 2.8 
Patch - Generic 108528-16 patch 
Machine SF15K
CPUs = 36 
RAM  = 96 GB


We created a Small Sample C program which allocates & FREEs memory but found that even 
after 
FREEing , the memory does NOT show as Freed in the pmap output . Is the following 
approach correct ?

DETAILS :-

@@@@@@@@@@@@@@@@@ SAMPLE C PROGRAM @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include <stdio.h>
main()
{
        char *abc = NULL ;
        int     i = 0 ;
        for (i = 1; i < 10; i++){
                printf("allocating [%d] bytes\n", 10*1024*(i+1));
                abc = (char *)malloc(10*1024*(i+1));
                memset(abc, '\0', 10*1024*(i+1));
                getchar();

                free(abc);
                printf("Freeing [%d]\n", i);
                getchar();
        }
        exit() ;
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


RUN Output :-

STEP 1 - allocating [20480] bytes 

pmap -x <PID of Above program process>

 Address   Kbytes Resident Shared Private Permissions       Mapped File
00010000       8       8       8       - read/exec         a.out
00020000       8       8       -       8 read/write/exec   a.out
00022000      24      24       -      24 read/write/exec     [ heap ]
FF280000     688     688     688       - read/exec         libc.so.1
FF33C000      32      32       -      32 read/write/exec   libc.so.1
FF370000      16      16      16       - read/exec         libc_psr.so.1
FF390000       8       8       8       - read/exec         libdl.so.1
FF3A0000       8       8       -       8 read/write/exec     [ anon ]
FF3B0000     152     152     152       - read/exec         ld.so.1
FF3E6000       8       8       -       8 read/write/exec   ld.so.1
FFBEC000      16      16       -      16 read/write/exec     [ stack ]
--------  ------  ------  ------  ------
total Kb     968     968     872      96

THE "Private" memory allocated by the [ heap ] is 24 K

STEP 2 - Freeing the memory allocated in the above Step 

Freeing [1] 

pmap -x <PID of Above program process>

 Address   Kbytes Resident Shared Private Permissions       Mapped File
00022000      24      24       -      24 read/write/exec     [ heap ]  

RESULT - THE "Private" memory allocated previously does NOT get Freed & 
[ heap ] continues to be 24 K

STEP 3 - 
allocating [30720] bytes     

pmap -x <PID of Above Program process>

 Address   Kbytes Resident Shared Private Permissions       Mapped File
00022000      32      32       -      32 read/write/exec     [ heap ]

STEP 4 - Freeing the memory allocated in the above Step 
Freeing [2]

pmap -x <PID of Above program process>

 Address   Kbytes Resident Shared Private Permissions       Mapped File
00022000      32      32       -      32 read/write/exec     [ heap ]

RESULT - THE "Private" memory allocated previously in Step 3 does NOT get Freed & 
[ heap ] continues to be 32 K

Thanks

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: VIVEK_SHARMA
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to