[rrdtool-maint] Bug#180283: rrdtool: CDEF function PREV(name) timesteps far too mauch

Jean-Michel Vourgère nirgal at debian.org
Wed Aug 26 09:26:42 UTC 2015

Control: tags -1 +moreinfo
Control: noowner -1

Hello Goswin

I'm cleaning up the rrdtool bug list, and I dig a bit into this one
submitted back in 2003!

I'm sorry no one from the Debian project answered you since then.

You listed the cgi source, but not the actual command used to create the
rrd database.
A cgi only works if a database is created first. This is almost
impossible to answer to your bug report without that information.

I can only assume you are (were) using code from the original donitor
whose source code is available at http://sourceforge.net/projects/donitor/
There, in file /sbin/update_rrd.pl, in function create_rrd, the step is
set to 120 seconds, and the heartbeat to 240 seconds:

> rrdcreate esel.rrd --step 120 DS:workload_down:GAUGE:240:U:U DS:workload_up:GAUGE:240:U:U DS:overhead_in:GAUGE:240:U:U DS:overhead_out:GAUGE:240:U:U DS:connections:GAUGE:240:U:U DS:ds1:GAUGE:240:U:U DS:ds2:GAUGE:240:U:U RRA:AVERAGE:0.5:1:360 RRA:AVERAGE:0.5:4:360 RRA:AVERAGE:0.5:16:360 RRA:AVERAGE:0.5:64:360 RRA:AVERAGE:0.5:256:360 RRA:MIN:0.5:4:360 RRA:MIN:0.5:16:360 RRA:MIN:0.5:64:360 RRA:MIN:0.5:256:360 RRA:MAX:0.5:4:360 RRA:MAX:0.5:16:360 RRA:MAX:0.5:64:360 RRA:MAX:0.5:256:360

Actually, your variable names are different (urate3 versus ds2) but I'll
assume a moment you were using these settings.

This means you have:
- A 2 minutes resolution for 12 hours (meaning if last value is "now",
then first value is now-11h58)
- A 8 minutes resolution for 48 hours
- A 32 minutes resolution for 8 days
- ...

Also, you defined:
which is impossible. PREV must be applied to another value, not to
itself! This may be the source of the problem.
I'll assume you meant sdrate3=PREV(drate3)

I may have been able to reproduce the issue, but not just for sdrate3,
all the data is showing a 8 minutes resolution.

Therefore, it seems normal that PREV() is 8 minutes earlier. Is it
possible you did not notice that everything has a 8 pixel horizontal
resolution but only that the two lines were 8 pixels apart?

As far as I can tell, x=PREV(x) is not working any more, it doesn't show
weird things and does not loop nor overflow any more. This may have been
fixed upstream.

Now why do we have a 8 minutes resolution?

It tried different values for --start.
--start 'end-12h00' yield a 8 minutes resolution
--start 'end-11h00' yield a 8 minutes resolution
--start 'end-10h59' yield a 2 minutes resolution

I may dig a bit in that part. There may be two issues there. A time zone
one (I'm UTC+1) and an interval one...

If you still have the data, know the way you created the rrd file,
and/or how it's filled, it will help pin point that issue.



More information about the pkg-rrdtool-maint mailing list