[Spread-users] possible memory leak in spread daemon
Jonathan Stanton
jonathan at cnds.jhu.edu
Thu Feb 5 20:25:10 EST 2004
This may be a memory leak, but Spread does have memory usage behavior that
surprises people and sometimes looks like a leak but is not.
The two things to check first are:
1) Does it grow 'steadily' or does it jump up and then stay that way for
while.
2) Did you have peaks of traffic through spread (either in number of
messages or the size of those messages) during that time.
(If it jumps and/or you had traffic increases then it is likely NOT
evidence of a leak -- it might be, but spread would normally also behave
that way. If it increases steadily or you are sure traffic load did not
increase, then it is more likely to be a leak)
The reason for these questions is that Spread can look like it is
leaking for two reasons:
1) Spread will temporarily use a lot of memory for messages buffers, and
then "free" the memory back to the libc malloc implementation by calling
'free()'. But most OS/libc's don't report that or actually return it to
the kernel. So in 'ps' or top commands the program looks like it is still
using the memory.
2) Spread has an internal memory management system that caches blocks of
similary sized memory buffers to decrease the overhead of handling quickly
varying message loads. These memory buffers can grow to substantial size
if you have large numbers of clients, very fast message rates, lots of
slow receivers, or other scenerios that require Spread to buffer lots of
messages internally before it can deliver them to the receiver sets.
A year or so ago someone ran a memory leak tracking tool on Spread and we
found (I think) one leak, and a bunch of false positives. I also built a
custom memory leak tracking version of Spread's internal memory management
code and used that for awhile. If you still see it growing I can pull out
that code to try it.
If you need to bound the memory usage tighter, recompiling with some
smaller limits in the spread_params.h file will decrease the maximum size
Spread can grow to by limiting how many messages it will buffer
internally. This can increase the cases of clients getting cut off for
reading too slow, or might limit the number of clients or daemons you can
run.
Hope this helps some,
Jonathan
On Thu, Feb 05, 2004 at 04:35:52PM -0600, Greg Shebert wrote:
> hi folks
>
> just wanted to report that, using the latest release of spread (not from
> CVS) on redhat 9 seems to leak memory...
>
> i see my spread daemon grow from about 2 meg to about 50meg over the
> course of a few days...
>
> any tips on how i might track down the problem?
>
> -greg-
>
>
>
> _______________________________________________
> Spread-users mailing list
> Spread-users at lists.spread.org
> http://lists.spread.org/mailman/listinfo/spread-users
--
-------------------------------------------------------
Jonathan R. Stanton jonathan at cs.jhu.edu
Dept. of Computer Science
Johns Hopkins University
-------------------------------------------------------
More information about the Spread-users
mailing list