[rrd-users] [unsure] Re: Things not adding up
Alex van den Bogaerdt
alex at vandenbogaerdt.nl
Tue Apr 5 22:03:08 CEST 2011
> In this case I don't think your argument is relevant. I'm only storing
> in/out bits for a single device in each rrd file... so I wouldn't store a
> sum across devices in any one rrd. The problem appears when I read all
> these separate files for the aggregate graph. Also.. if you manually add
> up the displayed average and current values they do agree with the printed
> totals.. only the max values are coming out wrong. Also.. it's off by a
> rather odd amount.
max(A)+max(B) does not equal max(A+B)
Simon tried to explain. I think another example may be helping.
Suppose device "A" is doing 9,8,7,6,5,4,3,2,1
and device "B" is doing 1,2,3,4,5,6,7,8,9
Your graph will show a staircase going down from 9 to 1, the X-axis, and a
total of a steady 10.
Your GPRINT will show max(A)=9, max(B)=9, total=10. You would be asking why
it's 10, not 18.
max(A) is 9, max(B) is 9. You are summing max(A)+max(B) and get 18.
However, when you stack A and B, you'll see your graph shows a total of 10
during the entire graph.
{9+1},{8+2},...{2+8},{1+9}
Now, if you compute (with a CDEF) the sum of A and B, and get the max of
that, you will get
max(A+B)=max(9+1,8+2,...2+8,1+9)=max(10,10,10,10,10,10,10,10,10)=10. Which
is what you get using your code.
What Tobi told you will be happening only if you use AVERAGE as your
consolidation function.
If you create a graph where each pixel column shows more than one CDP, then
RRDtool will (for instance) average 8 and 10 into 9, so your max gets lower.
It's definately something to look out for, but I believe in your example it
does not play a role.
More information about the rrd-users
mailing list