Memory Free up Failing on Solaris 8 - Off-topic

From: VIVEK_SHARMA (VIVEK_SHARMA@infosys.com)
Date: Mon Feb 03 2003 - 02:00:35 EST


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
_______________________________________________
sunmanagers mailing list
sunmanagers@sunmanagers.org
http://www.sunmanagers.org/mailman/listinfo/sunmanagers



This archive was generated by hypermail 2.1.7 : Wed Apr 09 2008 - 23:25:45 EDT