web-dev-qa-db-ja.com

RRDpdpステータス値

このRRDのds [fan_speed] .valueフィールドについて誰かに説明してもらえますか?

rrdtool情報は以下を提供します:

rrd_version = "0003"
step = 300
last_update = 1360341382
ds[fan_speed].type = "GAUGE"
ds[fan_speed].minimal_heartbeat = 600
ds[fan_speed].min = 0.0000000000e+00
ds[fan_speed].max = 1.0000000000e+02
ds[fan_speed].last_ds = "60"
ds[fan_speed].value = 4.9200000000e+03 ********* ???
ds[fan_speed].unknown_sec = 0
...
rra[2].cf = "AVERAGE"
rra[2].rows = 700
rra[2].cur_row = 295
rra[2].pdp_per_row = 6
rra[2].xff = 5.0000000000e-01
rra[2].cdp_prep[0].value = 6.0000000000e+01
rra[2].cdp_prep[0].unknown_datapoints = 0

(「PDPステータス」の「rrdtooldump」を使用して同じ値が表示されます。)

それは何ですか?

(通常、このデバイスのファンは60(%)であり、たとえばrra [2] .cdp_prep [0] .value = 6.0000000000e + 01に示されています)

ありがとう。

2
Marki

これは、RRDがステップ期間の時間調整値を追跡する方法です。

最後に値60を時間1360341382に保存しました。ステップは300なので、最後のRRD集計時間は82秒前の1360341300でした。これらのファン速度がどれほど一定であるかを考えると、以前の値もおそらく60でした。したがって、RRDは、以前に60を保存し、1360341382に60を保存したため、1360341300から1360341382までの82秒間、値は常に 60。60 * 82は4920で、保存されている値です。

なぜRRDはこれを行うのですか?さて、その82秒間の平均値を知りたい場合は、値を秒数で割って60を取得するだけです。後でやってくる場合は、1360341464(82秒後に作成)数学は簡単です)そして値50を保存すると、RRDはこの値に55 * 82(この82秒間の平均が60と50の中間であると見なすため55)を追加して保存します。これで、集計期間の最初の164秒間に9430が作成されます。 RRDが164期間の平均を表示したい場合は、9430で、164で割ると57.5になります。

RRDはstep境界で集計するため、その寿命を短くするために、集計期間(この場合は300秒)の保存値を作成するだけです。 300秒間に保存した値を取得し、300で除算します。これがステップの平均になり、それが保存され、より大きな集計に使用されます。 valueフィールドには、次のステップの境界に達したときに使用できる時間加重合計を保持するために使用する中間値があります。これは、集計作業を高速化するための最適化です。

3
hrunting