So, you're probably being burned by the fact that the process is being
frequently stopped by DTrace to determine the ustack values. If you only
need the last n, consider using a ring buffer (which won't stop the process
until the DTrace enabling is terminated). Also, if it's a memory leak that
you're trying to track down, strongly consider using libumem and
::findleaks instead -- it should take you right to the leak! (See
umem_debug(3MALLOC) for details.)
- Bryan
On Tue, Apr 17, 2018 at 11:27 PM, Robert <[email protected]>
wrote:
> Hi there!
>
> Hope this wonderful community is still alive.
>
> So, I have a "leaking" process:
>
> sudo timeout 10 dtrace -n 'pid$target::malloc:entry { @ = count(); }' -p
> 24063
> dtrace: description 'pid$target::malloc:entry ' matched 1 probe
> 1474858
>
> Around 150K malloc-s per sec. And it leaks somewhere (under a certain load
> only).
>
> What I'm trying to do is to store all malloc\free calls params\results
> along with stack traces.
>
> Then I would analyze collected logs and find a leaking spot (I really hope
> so).
>
> Everything works fine, except ustack() calls - they are incredibly slow
> and kill the performance almost right away.
>
> Process's CPU usage drops down to zero and I can see how log file is
> growing with about one record per second (instead of 150K\sec).
>
> Is there some workaround to make ustack() calls to work in real-time? Or
> maybe I've screwed up something...
>
> Please help! Thanks!
>
-------------------------------------------
dtrace-discuss
Archives: https://www.listbox.com/member/archive/184261/=now
Modify Your Subscription:
https://www.listbox.com/member/?member_id=25769126&id_secret=25769126-8d47a7b2
Powered by Listbox: http://www.listbox.com