[rrd-developers] rrdcached contention when flushing
kevin brintnall
kbrint at rufus.net
Tue Nov 4 23:34:45 CET 2008
On Tue, Nov 04, 2008 at 10:22:52PM +0000, Daniel Pocock wrote:
> > That sill should not cause your process to bloat to several gigabytes..
> > The size of the tree should be on the order of O(node_count * PATH_MAX).
> >
> > What does "STATS" from your daemon look like?
>
> After seeing the valgrind output - which only indicates a static amount
> of un-freed memory relating to keys, as you have described - I'm
> thinking that the problem may not be a leak, rather, it may be some kind
> of backlog of updates. I've got a few more tests planned to investigate
> this, for example, slowing down the IO to see if memory usage grows more
> quickly.
You can estimate the memory utilization like this:
num_rrds * (file_name_length + (w_timer / rrd_step) * update_str_len)
If you want to see what's outstanding for a few files, you can use
"PENDING /path/file" and see what the daemon has.
> Can you think of anything extra that could be added to the STATS output
> to indicate whether there is a backlog, how long it takes to come back
> to each node, etc?
>
> Is it possible that some files would never get flushed, if the flush
> command was being invoked repeatedly for a subset of the files?
It's possible.. Periodically enqueued files are placed on the TAIL,
whereas "FLUSH"ed files are placed on the HEAD. It's possible to starve
the normal update (both -w and -f timers) with a lot of FLUSH.
If that's happening, you will see your "QueueLength" stat stay >0.
--
kevin brintnall =~ /kbrint at rufus.net/
More information about the rrd-developers
mailing list