understanding pmap

ESGLinux esggrupos at gmail.com
Mon Mar 8 18:44:19 UTC 2010


H

2010/3/4 Yong Huang <yong321 at yahoo.com>

> > I?m looking for a memory problem on a system using the pmap command.
> >
> > This is an output:
> > # pmap -d 4302
> > #
> .....
> > 49770000  128896 rwx-- 0000000049770000 000:00000   [ anon ]
> > 51550000 1398144 rwx-- 0000000051550000 000:00000   [ anon ]
> > a6ab0000  172288 rwx-- 00000000a6ab0000 000:00000   [ anon ]
> > b4612000    8636 r-xs- 0000000000000000 068:00002 charsets.jar
> .....
> > mapped: 2391764K    writeable/private: 2217000K    shared: 158336K
> >
> > I have a lot of used memory and the line that takes my attention is this:
> > 51550000 1398144 rwx-- 0000000051550000 000:00000   [ anon ]
> >
> > But now I don?t know how to handle it. What can I do with this info? how
> can
> > I know why there is so much memory there?
> >
> > Thanks in advance
> >
> > ESG
>
> It's always a good idea to tell us your Red Hat and kernel version. On any
>  slightly newer version, you can see more details about any memory segment
> in smaps pseudo file under /proc/<pid>. Your 1.4 GB anonymous memory is
> allocated private to that process. Some programs are written in a way to use
> lots of memory for data processing. Other than asking the developer to
> change the code, there's not much you can do. If they can't do it and you
> have multiple such processes running at the same time, ask the developer to
> see if they can rewrite to use shared memory, or at least a large portion of
> it as shared.
>
> If the memory keeps growing and never comes down, that's another issue.
> Tell the developer he must fix the memory leak.
>
> Yong Huang
>
> Hi,

the kernel I have is this:
Linux server 2.6.9-42.0.10.ELsmp #1 SMP Fri Feb 16 17:17:21 EST 2007  i686
i386 GNU/Linux

The version of Red hat is:
more redhat-release
Red Hat Enterprise Linux AS release 4 (Nahant Update 4)

I have run the comando pmap -d 4302 again and here is the output:
....

414fa000     336 rwx-- 00000000414fa000 000:00000   [ anon ]
4154e000       4 rwx-- 000000004154e000 000:00000   [ anon ]
4154f000  145284 rwx-- 000000004154f000 000:00000   [ anon ]
4a330000  116864 rwx-- 000000004a330000 000:00000   [ anon ]
51550000 1398144 rwx-- 0000000051550000 000:00000   [ anon ]
a6ab0000  172224 rwx-- 00000000a6ab0000 000:00000   [ anon ]
b12e0000    2496 rwx-- 00000000b12e0000 000:00000   [ anon ]
b1550000       4 r-x-- 0000000000000000 068:00002 librmi.so
b1551000       4 rwx-- 0000000000000000 068:00002 librmi.so
b1552000     764 rwx-- 00000000b1552000 000:00000   [ anon ]
b1611000       4 rwx-- 00000000b1611000 000:00000   [ anon ]
b1612000   48704 rwx-- 00000000b1612000 000:00000   [ anon ]
b45a2000     448 rwx-- 00000000b45a2000 000:00000   [ anon ]
b4612000    8636 r-xs- 0000000000000000 068:00002 charsets.jar
b4e81000      84 r-xs- 0000000000000000 068:00002 jce.jar
b4e96000     532 r-xs- 0000000000000000 068:00002 jsse.jar
....
mapped: 2690360K    writeable/private: 2578232K    shared: 94876K

the line I thought it was a problem hasn´t increased at all but the total
memory has increased a lot.

I have a lot of lines like this:
3a136000      12 --x-- 000000003a136000 000:00000   [ anon ]
3a139000     504 rwx-- 000000003a139000 000:00000   [ anon ]
3a1b7000      12 --x-- 000000003a1b7000 000:00000   [ anon ]
3a1ba000     504 rwx-- 000000003a1ba000 000:00000   [ anon ]
3a238000      12 --x-- 000000003a238000 000:00000   [ anon ]
3a23b000     504 rwx-- 000000003a23b000 000:00000   [ anon ]
3a2b9000      12 rwx-- 000000003a2b9000 000:00000   [ anon ]
3a2bc000     504 rwx-- 000000003a2bc000 000:00000   [ anon ]
3a33a000      12 rwx-- 000000003a33a000 000:00000   [ anon ]
3a33d000     504 rwx-- 000000003a33d000 000:00000   [ anon ]
3a3bb000      12 --x-- 000000003a3bb000 000:00000   [ anon ]
3a3be000     504 rwx-- 000000003a3be000 000:00000   [ anon ]
3a43c000      12 --x-- 000000003a43c000 000:00000   [ anon ]

Looking at the file:
/proc/4302/maps I don´t see anything that gives me any idea.

How can I detect the memory leak looking at this? How can I know where is
the memory?

Thanks,

ESG



More information about the redhat-list mailing list