[rrd-users] Perl RRD graphing rounding error

James Kingston james.kingston at gmail.com
Fri Nov 5 22:47:27 MET 2004


This might be a bit difficult to explain, but I'll give it a go...

We have an rrd, with one of the variables being a guage with a CF of
AVERAGE.  Into it, we write either 100, 0 or NaN at the polling
intervals (5 minutes).  We use this number as a sort of polling
availability check.  The data rolls up from 5-minute averages to
15-minute averages after 7 days.

For many of these rrds, the polling has always been successful, so the
data has 100 for every polling interval.  We can confirm this using
rrdtool fetch or dump

We use RRDs::graph (1.000491) with the following parameters:
/dev/null
DEF:A0=data.rrd:ds0:AVERAGE
DEF:B0=data:ds1:AVERAGE
DEF:C0=data.rrd:ds0:MAX
DEF:D0=data.rrd:ds1:MAX
CDEF:B1=B0,UN,0,B0,IF
PRINT:A0:AVERAGE:%lf
PRINT:B1:AVERAGE:%lf
PRINT:C0:MAX:%lf
PRINT:D0:MAX:%lf
-s -1182833
-e -42232

The problem is that for certain intervals, even though every sample
has 100's throughout, we get a number slightly less than 100 as the
average of B1.  I believe we have only observed it for timespans that
span the rollup interval (for instance, from 14 days ago until today).
 If we remove the CDEF, the result will always be 100.

The purpose of the CDEF is to convert unknown values to 0 for the
purpose of this calculation.  It should have no effect as there are no
unknown samples in the data we're looking at.

My question is... what am I missing?  What else can I check or look
into?  And, is there any better way to pull the average of the
AVERAGEs with CDEFs, rather than using the graph function and deleting
the image?

--
Unsubscribe mailto:rrd-users-request at list.ee.ethz.ch?subject=unsubscribe
Help        mailto:rrd-users-request at list.ee.ethz.ch?subject=help
Archive     http://www.ee.ethz.ch/~slist/rrd-users
WebAdmin    http://www.ee.ethz.ch/~slist/lsg2.cgi



More information about the rrd-users mailing list