On Thu, Mar 5, 2009 at 8:31 AM, elkhaoul elkhaoul <elkha...@yahoo.fr> wrote:
> Hello,
>
>
> Application running on Solaris10 use the all memory (100%) more than 80GB
> (The machine has only 8Gb of physical memory and 16 of swap),
>
> #### prstat -a
> .............
>  NPROC USERNAME  SIZE   RSS MEMORY      TIME
> CPU
>    142 root     2296M  181M   0.2%  39:53:02 7.6%
>    348 ora10g     99G   83G   100%  61:40:23 5.3%

I bet that is an Oracle 10g database.  Oracle uses a large shared
memory area called the "system global area" or sga.  You likely have
tens to hundreds of processes all mapping this same shared memory
segment and as such each appears to be using that amount of memory.
The rather ancient patch release of Solaris 10 that you are using is
not able to recognize that it is counting the same memory many times
and as such gives you misleading information.

FWIW, I've seen other systems that claim to be using well over a
terabyte of memory even though they *only* had a couple hundred
gigabytes.  I believe that it was in the Solaris 10 update 4 time
frame that the way that memory is accounted for changed.  Now oracle
on the same system appears to be using less than 100 GB (again that is
a minority of the RAM on the box).  The new accounting appears to not
include the sga, so there is a trade-off here with neither being a
completely accurate representation.

>
> #### sar -g 10
> SunOS epsu17 5.10 Generic_118822-26 sun4u    03/05/2009
> 15:25:52  pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf
> 15:26:02    23.16    38.57    36.68   358.95     0.00

The pgscan/s certainly looks like you have some memory pressure.

> How can I find debug this application ? the processing blocking the memory ?

You can use "vmstat -p 10" to get a better idea of what is causing the
paging (executable, anonymous, filesystem).

You can use "ipcs -ma" to see the shared memory segments, there sizes,
and how many processes have them mapped (nattach).  A segment owned by
ora10g that is kinda big with a large number of processes attached is
likely the sga.

The DTraceToolkit (ask google) has several useful scripts in the Mem directory.

Things I would be looking at are:

- Is the SGA set bigger than it should be?
- Are you doing a lot of I/O to and from /tmp?
- Are you running things on the box not related to the database?  Look
at "prstat -s rss -c -n 5000 1 1 | grep -v ora10g | head" to find
candidates to relocate to another box.


-- 
Mike Gerdts
http://mgerdts.blogspot.com/
_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

Reply via email to