Re: Bug#543631: Bug#543631: rrdupdate does not support floating point values with DERIVE, COUNTER

Sebastian Harl <[email protected]>
Newsgroups gmane.comp.db.rrdtool.devel
Message-ID <[email protected]>
Hi,

On Thu, Jan 14, 2010 at 08:12:38AM +0100, Tobias Oetiker wrote:
> Dec 28 Sebastian Harl wrote:
> > (This is a follow-up to Debian [bug543631].)
> >
> > On Wed, Aug 26, 2009 at 08:00:22AM +0000, Florian Weimer wrote:
> > > Floating point values are supported with GAUGE.  This suprising
> > > behavior is not clearly documented, as far as I can tell.  I don't
> > > think there are architectural reasons for this behavior.
> >
> > [side note: "this surprising behavior" refers to the subject of the
> > E-mail, i.e. "rrdupdate does not support floating point values with
> > DERIVE, COUNTER" ;-)]
> >
> > I'm not entirely sure about any reasons for that either. COUNTER and
> > DERIVE values are stored as a rate (i.e., a double) as well anyway. To
> > be able to calculate the rate, the last value is stored as well. This is
> > done using a string, though, so it does not impose any limitations
> > either.
> >
> > With this E-mail, I'm forwarding the issue upstream, hoping for an
> > explanation (or request for patches ;-)).
> 
> the reason for this is that rrdtool does the integer math for
> building the difference between two counter values 'by hand' with
> the advantage of being able to handle really long counters ...
> 
> OTOH with long long being available across the board, this might be
> a bit of a anachronism ... 

So, "really long counters" is supposed to be 64bit integers, right? I
presume that using 'long long' should not be a problem on most systems
that run RRDtool, but please (anybody) correct me if I'm wrong.

Anyway, if this really happens to be a problem, we could still fall back
(at compile time) to a different implementation (possibly even using
some external library -- I expect this to happen on less-powerful
hardware mostly; using some lib that includes optimized code for such
architectures might be an additional benefit).

> not quite sure though, what happens when
> you diff two doubles realy close to 2^64 ... does this stay
> accurate enough ? I guess a little magic would still be needed
> there ... care to investigate ?

Hrm … this will probably be an issue, since the diff is fairly small
(usually) and the precision of 'double's is limited to 53 bits (IEEE
754). 'long double' might be a solution to that, but I'd expect quite a
few problems on different architectures. Also, this would probably
require modifications to the on-disk format :-/

Not sure, if there is a (backward-compatible) way to address this issue.
Any comments and suggestions would be welcome.

Cheers,
Sebastian

> > [bug543631] http://bugs.debian.org/543631

-- 
Sebastian "tokkee" Harl +++ GnuPG-ID: 0x8501C7FC +++ http://tokkee.org/

Those who would give up Essential Liberty to purchase a little Temporary
Safety, deserve neither Liberty nor Safety.         -- Benjamin Franklin

_______________________________________________
rrd-developers mailing list
[email protected]
https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers
signature.asc (application/pgp-signature, 197 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEARECAAYFAktPCWgACgkQEFEKc4UBx/xKYwCfRHsT5hyPXXP/VOks7AUzvVTj
YasAni/rhQpBte+hNhGDSazBA8XcUQ0b
=bhvM
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.