什么是最大的&可以存储在RRDtool中的最小值?

时间:2014-03-13 12:39:13

标签: rrdtool

我有一个系统,我想用Munin记录,它使用RRDtool。我想要计算的一些值可能(某天)变得非常大,例如整数TB的整数。我想知道,当我尝试在其中存储大值时,我在Munin中使用的数据存储不会溢出。

我在http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html#IGAUGE的文档中看不到关于支持的数据大小,范围或精度的任何注释,我没有通过Google搜索相关术语找到任何内容。

有没有关于GAUGE,COUNTER,DERIVE,ABSOLUTE和COMPUTE数据存储的支持范围和精度的文档,请?

1 个答案:

答案 0 :(得分:1)

在内部,RRDTool将值存储为double数据类型。但是,这实际上意味着什么有时可能取决于您的系统架构和编译器 - 这是RRD文件不可移植的原因之一。

要了解系统中的值,假设您自己编译了代码,请在C头文件中查找DBL_MAX的定义(检查float.h,limits.h,values.h。 ..)

在我们的系统中,Double的最大值为1.79769313486231470e+308;然而,一旦你超过1.0e + 15,你将开始看到精度损失,因为尾数长度是有限的(它只有52位精度)

可以修改rrd_value_trrd.hrrd_format.h的定义,以使用long double(80位精度)甚至__float128quadruple(128位精度),如果你的编译器支持它,但是如果你这样做的话,你就可以自己做,而且肯定不会向后兼容......