Hi Tobi, i'm running a distributed daemon over several servers. On every server rrd files are recorded for usage stats and these files are exported by NFS. On one control server all rrd files are combined using the ADDNAN operator. If one server was not running the value would be NaN and it should be treated as 0. If all values are NaN the complete system was not running at this time and the result should be NaN to be ignored by the TREND line or year average information.
x=a,UN,0,a,IF,b,UN,0,b,IF,+ is not the same since NaN + NaN would be 0. An alternative for ADDNAN would be x=a,UN,b,b,UN,a,a,b,+,IF,IF and this is getting more complex if you like to add three or more values this way. A NANTOZERO operator would not help here. The ADDNAN operator is associative and commutative. I also thought about adding NAN-safe versions of other arithmetic functions. For subtraction NaN could also be treated as 0 but i found no real scenario where this would be useful. For multiplication NaN could be treated as the neutral element 1. Reasonable? ... i don't know. Division and module are far more complex. One could think about adding NAN-safe MAX/MIN functions. MAXNAN(a, NaN) would be a and not NaN. Best regards Timo Stripf At 06:48 06.03.2008, you wrote: >Hi Timo, > > > On Thu, Mar 06, 2008 at 01:44:30AM +0100, Timo Stripf wrote: > > > Hello, > > > > > > i've implemented a nan-safe add operator (ADDNAN) into rrd. I used it > > > to add several incomplete graphs. > > > > > > NaN + NaN => NaN > > > x + NaN => x > > > NaN + y => y > > > x + y => x + y > > [...] > > Quite often 'NaN' does not mean 'nothing'. In many cases substituting > > the average of the two neighbours (not direct neighbours per se) would > > make more sense. > > > > At the very least I think this feature deserves more documentation than > > just a line or two. > >How about doing this explicitly: > > x=a,UN,0,a,IF,b,UN,0,b,IF,+ > >then the effort for doing it has some relationship to the 'danger' >of the operation. > >or if you insist to make this simpler, how about implementing a >NANTOZERO operator ? > > x=a,NANTOZERO,b,NANTOZERO,+ > >cheers >tobi > >-- >Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten >http://it.oetiker.ch [EMAIL PROTECTED] ++41 62 213 9902 > >_______________________________________________ >rrd-developers mailing list >[email protected] >https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers _______________________________________________ rrd-developers mailing list [email protected] https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers
