В этом материале
До вычисления и агрегирования скорости учитывайте идентификатор, поддержку и границы сброса счётчика.
У накопленного значения есть история
Счётчик GPU имеет смысл только в пределах истории, которую он накапливает. Перезапуск сборщика, событие жизненного цикла драйвера, замена устройства или поддерживаемый аппаратный сброс могут разделить эту историю. Если мониторинг склеивает обе стороны без явной границы, рассчитанная скорость ошибок и событий становится более обманчивой, чем исходные показания.
В справочнике запросов NVML описаны разные семейства счётчиков и доступность для устройств. Срок накопления каждого поля нужно проверять отдельно. Нельзя считать, что все поля сбрасываются при перезапуске сборщика или одинаково сохраняются после переходов устройства и драйвера.
Определите эпоху измерения
Эпоха — интервал сопоставимости идентификатора, семантики счётчика и исходной точки. Дайте ей локальный идентификатор и сохраняйте загрузку хоста, UUID GPU, версию драйвера и конфигурацию сборщика. Новая эпоха иногда нужна даже без уменьшения числа: могло измениться устройство или область отчётности.
Справочник полей DCGM помогает определить смысл выбранных показателей. Идентификаторы производителя и единицы должны оставаться в конфигурации сбора. Удобная подпись «всего ошибок» не должна скрывать, относится ли ряд ко всему устройству, отдельному экземпляру, области памяти или иной категории событий.
Обрабатывайте уменьшение явно
Рассмотрим условные последовательные значения 40 и 3. Простая разность равна минус 37, но это не физическая скорость исправленных неисправностей. Это повод исследовать границу эпохи. Если сброс подтверждён, начинайте новую точку отсчёта с нового наблюдения. Если переход неизвестен, сохраняйте эту неопределённость в отчёте.
Нельзя объявлять точное число событий за ненаблюдаемую перезагрузку, просто добавив значение после неё. До первой новой выборки могли произойти события, а срок накопления поля может отличаться от времени работы хоста. Укажите, какую часть интервала покрывают наблюдения и какая часть осталась за пределами измерения.
Не теряйте состояния отсутствия данных
Таймаут, неподдерживаемое поле и корректный ноль являются разными записями. Статус запроса нужно хранить отдельно от числа: отказ экспортера не должен превращаться в ряд здоровых нулей. Аналогично, смена индекса GPU не должна переносить историю старого устройства на нового владельца этого индекса.
В отчёте пула обрабатывайте сбросы внутри каждого исходного ряда до агрегирования. Иначе перезапуск одной карты способен скрыть приращение другой. Сохраняйте связь общего показателя с эпохами устройств, чтобы исследователь инцидента мог восстановить состав наблюдений и проверить выводы по отдельным картам.
Проверьте сборщик сохранёнными примерами
Используйте последовательности входных данных без воздействия на оборудование: рост, неизменное значение, уменьшение, пропуск выборки, отсутствие поддержки и смена устройства. Проверяйте полученные границы и разности. Так исследуется логика отчётности без сброса работающей GPU ради демонстрации. Итоговый отчёт должен описывать измеренную эпоху, а не подразумевать непрерывную историю устройства, которую сборщик в действительности не наблюдал.