
正常情況:
設(shè):正常每5秒更新一次,HB=10,分別在第1個(gè)5秒時(shí)更新值1,第2個(gè)5秒時(shí)更新值2……
這樣每次PDP都有值:
887457305: 1.0000000000e+00
887457310: 2.0000000000e+00
887457315: 3.0000000000e+00
887457320: 4.0000000000e+00
887457325: 5.0000000000e+00
887457330: 6.0000000000e+00
887457335: 7.0000000000e+00
887457340: 8.0000000000e+00
設(shè):第2、3次更新沒有到來,4來時(shí),距上一次更新已經(jīng)過去15秒>HB,直接將第2、3、4次的PDP置為無效:
(這時(shí)就算在3和4之間再有值被插入結(jié)果也是一樣,這是因?yàn)椴迦氲闹刀紝⑹?/span>HB超時(shí),3值都將無效,同時(shí)此值也會(huì)被拋棄,不會(huì)影響4值的計(jì)算)
887457305: 1.0000000000e+00
887457310: nan
887457315: nan
887457320: nan
887457325: 5.0000000000e+00
887457330: 6.0000000000e+00
887457335: 7.0000000000e+00
887457340: 8.0000000000e+00
設(shè):4值晚一秒到來,即21秒,另,4和5之間有多個(gè)值:24秒的2,25秒的5(如小圖):
它是按照權(quán)重計(jì)算的:4*1/5 + 2*3/5 + 5*1/5 = 3
887457305: 1.0000000000e+00
887457310: nan
887457315: nan
887457320: nan
887457325: 3.0000000000e+00
887457330: 6.0000000000e+00
887457335: 7.0000000000e+00
887457340: 8.0000000000e+00
程序如下:
#!/bin/bash
rm -f ./1.rrd
ep="Jan 1, 1970 UTC"
start=`date -d "$ep+887457300 seconds" +%s`
echo $start
# create
rrdtool create ./1.rrd "
--start `expr $start` --step 5 "
DS:t1:GAUGE:10:U:U "
RRA:AVERAGE:0.5:1:43200
# add data
rrdtool update ./1.rrd `expr $start + 5`:1
#rrdtool update ./1.rrd `expr $start + 10`:2
rrdtool update ./1.rrd `expr $start + 18`:3
rrdtool update ./1.rrd `expr $start + 21`:4
rrdtool update ./1.rrd `expr $start + 2`:2
rrdtool update ./1.rrd `expr $start + 25`:5
rrdtool update ./1.rrd `expr $start + 30`:6
rrdtool update ./1.rrd `expr $start + 35`:7
rrdtool update ./1.rrd `expr $start + 40`:8
echo "***begin fetch***"
s2=0
rrdtool fetch ./1.rrd AVERAGE "
-r 5 --start `expr $start + $s2` --end `expr $start + $s2 + 60`