如何理解 rrdtool 数据库中的主数据点(PDP)?

How to understand Primary Data Point(PDP) in rrdtool database?

如果我将 RRD 转储到 XML,那么在 "PDP Status" 部分下有三个元素:<last_ds><value><unknown_sec>。例如:

            <!-- PDP Status -->
            <last_ds>90</last_ds>
            <value>4.2177496500e+03</value>
            <unknown_sec> 184 </unknown_sec>

现在据我了解,每次执行"rrd update",我都会更新主数据点(PDP)。看起来像我为 rrdtool update(例如 rrdtool update test.rrd "N:abc")输入的任何值,然后它显示为 <last_ds> 元素的值。但是,<value>的数字是如何计算出来的呢?我指的是上面示例中的数字 4217.7496500。这是某种平均水平吗?最后但同样重要的是,虽然我知道 <unknown_sec> 显示了 DS 值未知时的秒数,但这个计数器似乎在 280 - 295 秒左右。怎么解释呢?我的意思是,例如,如果我执行 while true; do rrdtool update test.rrd "N:75"; rrdtool dump test.rrd | grep "<unknown_sec>"; sleep 1; done,其中 75 低于此 DS 允许的最低值,则输出如下:

   /* data not shown for brevity */
   <unknown_sec> 280 </unknown_sec>
   <unknown_sec> 281 </unknown_sec>
   <unknown_sec> 282 </unknown_sec>
   <unknown_sec> 0 </unknown_sec>
   <unknown_sec> 1 </unknown_sec>
   <unknown_sec> 2 </unknown_sec>
   /* data not shown for brevity */

<value> 的 PDP 内容是输入值乘以该值有效持续时间的所有乘积的总和。为了构建 PDP,在间隔结束时,将此值除以间隔持续时间减去未知秒数……当新间隔开始时,未知秒数重置为 0……