> But I wonder can this be the problem? (claiming 55% of memory in
> kmem_alloc_xxx buffers, which totals at about 16GB! )  Didn't those
> "simple" exec (ps, perl, grep, prtdiag etc.) free the buffers/memory
> when they exit? 

Many of these allocations probably were freed.  Remember, this script is
just showing you the processes that have allocated the most memory.
It's a starting point for drilling into the problem, if one exists.

> What is more, as my understanding, the dtrace scripts we run only
> monitor those exec calling kmem_alloc at the time while the dtrace
> script is running, what about those exec already have kmem_alloc_xx
> buffers allocated and in use?

Yes, that's correct.  However, there's a tradeoff.  Kmem_audit will keep
the last stack of the thread that alloc'd or free'd the buffer.
Unfortuantely, that consumes kernel memory.  If you're worried about
your kernel memory being used up, using kmem_audit will consume more
memory.  In my previous e-mail, I suggested kmem_audit as a last resort
when tracking down memory problems.  Setting kmem_flags requires you to
reboot your system, wheras DTrace can be run on a production box at any
time.  Using DTrace, you can see what threads are allocating and freeing
kernel memory, but only for the duration of the trace.  Once the trace
is complete, the DTrace buffers are freed.  It's up to you to decide
what approach is most appropriate.

-j
_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

Reply via email to