Мониторинг температуры устройств USB-термометрами

2023.11.10
Обзор USB-термометров TEMPer и Odtemp-1 для мониторинга температуры устройств. Примеры кода, мой кейс использования и графики присутствуют.

Купил материнскую плату Supermicro X9DBL-I, и дополнительно 6 плашек ОЗУ LRDIMM на 32гб каждая, итого 192гб - максимум для этой платы. В тот момент я не знал что LRDIMM греются во время работы, и меня это настораживало. Надо бы мониторить температуру.

В найденном datasheet к этим плашкам рабочая температура указана в пределах [0, 85] °C, а на форуме ixbt нормальный диапазон для ECC Reg указан [0, 70] °C.

Самый простой способ мониторить температуру через IPMI. Но на моей плате нет IPMI. Получать температуру ОЗУ можно через spd. Как-нибудь мы исследуем этот момент.

Можно взять аналговые термометры или примочки для Arduino. Платы Arduino у меня нет, желания преобразовывать аналоговые сигналы в цифрованые данные тоже нет.

И тут мне попались USB-термометры.

Как понять что подключено новое устройство

Перед тем как начать работу с термометрами необходимо понять: как определить что в нашей системе подключаются/отключаются устройства.

Для просмотра сообщений ядра о подключаемых/отключаемых устройствах можно использовать dmesg:

$ sudo dmesg -wT

Обзор USB-термометров

На момент моих исследований самыми доступными термометрами были Odtemp-1 и TEMPer.

Odtemp-1

Odtemp-1 - usb-термометр отечественного производства от компании ООО "Открытые разработки". Легкий, пластиковый, датчик температуры находится снаружи. Шаг измерения 0.5 °C.

Инструкция находится на сайте производителя на русском языке. Купить можно на Ozon, на момент покупки цена была 457р, на момент написания 700р.

В мануале есть кусок кода на python. Кроме того можно напрямую в терминале работать с термометром:

# запись настройки: каждую секунду отдавать температуру
$ sudo echo "~W1000" > /dev/ttyACM0

# считывать данные датчика
$ sudo cat /dev/ttyACM0
~G27.5
~G27.5

TEMPer

TEMPer - usb-термометр от китайского производителя, имеет несколько разновидностей.

Мне уделось найти Gold TEMPer на Авито, который выполнен в металлическом тяжелом корпусе. Судя по всему корпус способствует быстрому теплообмену с окружающей средой. Шкала с температурными метками просто наклейка.

Шаг измерения 0.0125 °C.

Для работы с ним есть скрипт на python, который может работать с несколькими видами этих термометров:

./temper.py
Bus 001 Dev 007 0c45:7401 TEMPerF1.4 27.56C 81.61F - - - -

Кроме того можно попробовать это сделать на bash. Есть экспортер для prometheus.

Сравнение

Сравнительное тестирование обоих термометров производил на своем ноутбуке при комнатной температуре:

Разница температур ~2 °C:

В работе

Мой кейс использования заключался в измерении и мониторинге температуры плашек ОЗУ. Для начала нужно приколхозить расположить термометры на плашках.

Расположение

Для легкого Odtemp-1 нашлось место на нижнем наборе плашек, так чтобы сам измерительный прибор касался металическую часть плашки:

Для TEMPer'a нашлось место вверху:

Графики

Для начала хочется убедитсья что этими термометрами вообще можно мониторить. Определить это можно явно понимая динамику температуры и наблюдая эту динамику на показаниях термометров.

Можно дать нагрузку на ОЗУ через stress, тогда плашки будут работать активнее и предположительно должны начать греться.

Я провел несколько стресс-тестов.

С обдувом температура немного увеличивается, на 2 °C, и ее рост останавливается:

Без обдува температура значительно увеличивается, на 10-12 °C, и ее рост останавливается:

А если убрать stress и наблюдать за холостой работой системы сначала без обдува, а потом с обдувом, то увидим понижение температуры:

Мониторить температуру плашек ОЗУ usb-термометрами можно. Вопрос погрешности и временнОй задержки открыт.

А теперь недельный график:

Вывод

Когда нет скиллов или встроенных устройств мониторинга температуры, usb-термометры подходящий вариант для понимания ситуации. Можно получить общую картину.

Через несколько месяцев использования в своем домашнем сервере, я убрал термометры и теперь не мониторю температуру плашек ОЗУ, потому что убедился что температура показанная на графиках в пределах нормы работы LRDIMM.

В телеграм канале DevOps от первого лица можно оставить комментарий или почитать интересные истории из практики DevOps