On 21.04.2013, at 10:43, Oliver Loch <grime...@gmx.net> wrote: > 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.
you must use high precision timestamps 3.1:5544455 3.2:765577 3.543:6645667 cheerst tobi > >> 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 > > _______________________________________________ > rrd-users mailing list > rrd-users@lists.oetiker.ch > https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users _______________________________________________ rrd-users mailing list rrd-users@lists.oetiker.ch https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users