HI,

Am 20.04.2013 um 11:17 schrieb Alex van den Bogaerdt <a...@vandenbogaerdt.nl>:

> Please just do some experiments with fake data.
> 
> Create two databases with the same property, ABSOLUTE counter type. Update 
> them using the same timestamps (do not use "N"), four times a second, and 
> make sure there is enough data to fill a couple of timeslots in your RRA.
> 

Using the same timestamp again gives me an error. This is what I did:

Wrote a script:

#!/usr/bin/env bash

set -x

file=test.rrd
ts=$(date +%s)

rrdtool create test.rrd -s 1 DS:gpio0:ABSOLUTE:14400:1:15000 
RRA:AVERAGE:0.5:60:500

for i in {1..3}; do
    rrdtool update test.rrd ${ts}:3600;
done

and then executed it, with the following results:

root@LePi:~/tests# ./ts
+ file=test.rrd
++ date +%s
+ ts=1366557702
+ rrdtool create test.rrd -s 1 DS:gpio0:ABSOLUTE:14400:1:15000 
RRA:AVERAGE:0.5:60:500
+ for i in '{1..3}'
+ rrdtool update test.rrd 1366557702:3600
+ for i in '{1..3}'
+ rrdtool update test.rrd 1366557702:3600
ERROR: test.rrd: illegal attempt to update using time 1366557702 when last 
update time is 1366557702 (minimum one second step)
+ for i in '{1..3}'
+ rrdtool update test.rrd 1366557702:3600
ERROR: test.rrd: illegal attempt to update using time 1366557702 when last 
update time is 1366557702 (minimum one second step)
root@LePi:~/tests#

So using the same timestamp multiple times per second doesn't seem to work for 
me.

> Feed 3600 into one RRD every time, feed 1 into the other RRD every time.
> 
> You should see a rate of 14400 in the first, and 4 in the other.
> 
> Now use a CDEF to multiply 4 by 3600, and you get 14400 again. Same 
> resulting rate, other way to achieve it. The resulting databases have 
> Joules/second in the first, and Wh per second in the other. That CDEF 
> transforms Wh into J, because 1 Wh is just 3600 J.
> 
> Do not confuse this with another reason to multiply by 3600. You have been 
> asking about 'per hour' rates. If you have 1 Wh per second, constantly, then 
> after an hour you will have used 3600 Wh. So if you multiply a rate by 3600, 
> you get 'rate per hour' instead of 'rate per second'.
> 
> If your database contains Wh, and you want to know Joules/hour, then you 
> need to multiply by 3600 twice (or one time by 12960000, for performance 
> reasons).
> 

The joules thing is something you started to talk about. Not really my problem. 
And I know that I get 3600W/h when I have one watt/hour per second. Its simple 
math, but at the moment it doesn't seem to be possible to update multiple times 
per second.


> And to answer your question about where RRAs get their data: it is already 
> described. PDPs are used to build CDPs. See the three phase description 
> again. If RRAs get their data from other RRAs, it would have been described 
> there.

So just for my understanding: If I want to have an RRA that holds the daily 
average of the power consumption over a month, I need to create an rrd with 
86400 PDPs? And If the average should be covered on a weekly basis over a 
month, I'd need an RRD with 7*86400 steps and it needs to be created like this:

rrdtool create test.rrd -s 1 DS:some-input:ABSOLUTE:14400:1:15000 
RRA:AVERAGE:0.5:604800:52

?
 

> Really, you are thinking and assuming a lot, but you do not verify this by 
> experimenting.
> 

I'd prefer verifying things with the help of documentation. And I'm not 
assuming anything, I'm asking how something could be done and present an idea I 
had to verify if it is possible this way. But it doesn't seem to be, so thanks 
for that.

> Start simple. Step==60 (meaning: every step is 60 seconds). Update with 
> timestamps that are a whole multiple of 60 (n*60). Start simple with three 
> RRAs, one using 1 PDP per CDP, one using 2 PDP per CDP and one using 3 PDP 
> per CDP. See what happens, and when it happens, by examining the resulting 
> RRD every time between updates.
> 
> Later you start updating with timestamps that are not a whole multiple of 60 
> seconds, e.g. at n*60+10, and you learn about normalization.
> 
I know how normalization (standard score) works. It's not black magic to me. 
But the question if writing multiple values to the database per second then 
leads to a max value in the PDP or to the average in the PDP (yes, the PDP, 
multiple updates per second -> normalization -> PDP), hasn't been answered till 
now. Asking again then lead to your statement that it would be better to 
multiply the value outside rrdtool first and then write it to rrd. 

Facing the fact, that it doesn't seem to be possible to update multiple times 
with the same timestamp, I'd say that either I'm missing something (timestamp 
with mili-/microseconds perhaps?) or that something else doesn't seem to work. 
Again: that's why I'm asking for it here.

Thanks.

KR,

Oliver Loch

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
rrd-users mailing list
rrd-users@lists.oetiker.ch
https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users

Reply via email to