Code

Random write timeout for rrdtool plugin
authorMariusz Gronczewski <xani666@gmail.com>
Mon, 17 Aug 2009 00:20:29 +0000 (02:20 +0200)
committerFlorian Forster <octo@huhu.verplant.org>
Mon, 17 Aug 2009 09:10:43 +0000 (11:10 +0200)
commitfd48357ddeb1b58d5795015e845f3105a7ba3103
tree6a64eb5c4b1b2cd8037d80d7c4e07955c305952a
parentdc0a112ba2a77dc61ab99dcbbda2e0bbf133d6ed
Random write timeout for rrdtool plugin

Hi,

i was thinking how to "spread out" writes to rrd files a bit, because
now its big spike every CacheTimeout or little smaller "square" on
graph if u use WritesPerSecond. So ive written little patch which
"spreads out" writing by changing Cache timeout every time rrdtool
plugin finds data to save. Basically instead of moving data older than
CacheTimeout to write queue it moves it if its older than CacheTimeout
+- RandomTimeout. What it changes?

Without it, gathered data is "synchronised" with eachother, for
example (CacheTimeout = 600):
1.collectd starts
2. after 10 minutes, data from all plugins get "too old" and get
pushed into write queue and get saved
3. after another 10 minutes, same thing, all data "ages" at same time
and get saved in one big chunk

With it (RandomTimeout=300) it works like that
1. collectd starts
2. after 5 minutes some data (lets call it A) starts to go into write queue
3. after 10 minutes from start about 50% (on average) data is saved
(lets call it B)
4. finally, after 15 minutes, all "leftover" data gets saved (lets call it C)
5. next "cycle"
6. data A ages first (cos it was put to disk first) and like before,
some of it gets writen earlier, some of it gets written later)
7. after that data B ages and like before writes are spread over 10 mins
8. same with C

so first cycle (looking at i/o) looks like sinus, next 10 minute cycle
is same sinus but flattened a bit and so on (looks like fading sinus),
and after few cycles it gives pretty much same amount on writes per
sec, no ugly spikes.
Effect looks like that:
http://img24.imageshack.us/img24/7294/drrawcgi.png
(after few more h it will be more "smooth")

Regards
Mariusz

Signed-off-by: Florian Forster <octo@huhu.verplant.org>
src/rrdtool.c