Может ли кто-нибудь объяснить мне значение поля ds [fan_speed] .value в этом RRD?
Информация 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
(То же значение отображается с помощью 'rrdtool dump' в «Статусе PDP».)
Что это?
(Обычно вентиляторы на этом устройстве имеют 60 (%), что показано, например, в rra [2] .cdp_prep [0] .value = 6.0000000000e + 01)
Спасибо.
Так RRD отслеживает скорректированное по времени значение для периода шага.
Последний раз вы сохраняли значение 60 в момент времени 1360341382. Ваш шаг - 300, поэтому последнее время агрегирования RRD было 1360341300, 82 секунды назад. Ваше предыдущее значение также, вероятно, было 60, учитывая, насколько постоянна, по вашим словам, скорость вращения вентилятора, поэтому RRD считает, что, поскольку вы сохранили 60 ранее и сохранили 60 в 1360341382, в течение 82 секунд между 1360341300 и 1360341382 значение было всегда 60. 60 * 82
4920, значение, которое вы видите как сохраненное.
Почему RRD это делает? Что ж, если он хочет знать, каково среднее значение для этого 82-секундного периода, все, что ему нужно сделать, это разделить значение на количество секунд, чтобы получить 60. Если вы придете позже, на 1360341464 (через 82 секунды, чтобы получить математика проста) и сохраните значение 50, RRD добавит 55 * 82
(55, потому что он считает, что среднее значение для этого 82-секундного периода находится на полпути между 60 и 50) к этому значению и сохраните его. Теперь у вас будет 9430 на первые 164 секунды периода агрегации. Если RRD хочет показать вам среднее значение за период 164, нужно просто 9430 и делить на 164, чтобы получить 57,5.
Поскольку RRD агрегирует step
границ, чтобы упростить его жизнь, он просто создает сохраненное значение для периода агрегации (в данном случае 300 секунд). Он возьмет любое значение, накопленное за 300-секундный период, и разделит его на 300. Это будет среднее значение для шага, и это то, что сохраняется и используется для более крупных агрегатов. В value
В поле есть промежуточное значение, которое он использует для хранения взвешенной по времени суммы, которую он может использовать, когда достигает границы следующего шага. Это оптимизация для ускорения работы агрегирования.