malloc+utrace, tracking memory leaks in a running program.

Konstantin Belousov kostikbel at gmail.com
Thu Jan 10 18:05:22 UTC 2013


On Thu, Jan 10, 2013 at 10:16:46AM -0500, Alfred Perlstein wrote:
> On 1/10/13 2:38 AM, Konstantin Belousov wrote:
> > On Thu, Jan 10, 2013 at 01:56:48AM -0500, Alfred Perlstein wrote:
> >> Here are more convenient links that give diffs against FreeBSD and
> >> jemalloc for the proposed changes:
> >>
> >> FreeBSD:
> >> https://github.com/alfredperlstein/freebsd/compare/13e7228d5b83c8fcfc63a0803a374212018f6b68~1...utrace2
> >>
> > Why  do you need to expedite the records through the ktrace at all ?
> > Wouldn't direct write(2)s to a file allow for better performance
> > due to not stressing kernel memory allocator and single writing thread ?
> > Also, the malloc coupling to the single-system interface would be
> > prevented.
> >
> > I believe that other usermode tracers also behave in the similar way,
> > using writes and not private kernel interface.
> >
> > Also, what /proc issues did you mentioned ? There is
> > sysctl kern.proc.vmmap which is much more convenient than /proc/pid/map
> > and does not require /proc mounted.
> >
> >> jemalloc:
> >> https://github.com/alfredperlstein/jemalloc/compare/master...utrace2
> >>
> 
> Konstantin, you are right, it is a strange thing this utrace.  I am not 
> sure why it was done this way.
> 
> You are correct in that much more efficient system could be made using 
> writes gathered into a single write(2).
Even without writes gathering, non-coalesced writes should be faster than
utrace.

> 
> Do you think there is any reason they may have re-used the kernel paths 
> for ktrace even at the cost of efficiency?
I can only speculate. The utracing of the malloc calls in the context
of the ktrace stream is useful for the human reading the trace. Instead
of seeing the sequence of unexplanaible calls allocating and freeing
memory, you would see something more penetrable. For example, you would
see accept/malloc/read/write/free, which could be usefully interpreted
as network server serving the client.

This context is not needed for a leak detector.
> 
> About kern.proc.vmmap I will look into that.
> 
> -Alfred
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20130110/20fa6872/attachment.sig>


More information about the freebsd-hackers mailing list