Купил материнскую плату 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
На момент моих исследований самыми доступными термометрами были Odtemp-1 и TEMPer.
Odtemp-1 - usb-термометр
отечественного производства от компании ООО "Открытые разработки". Легкий, пластиковый, датчик температуры находится снаружи. Шаг измерения 0.5 °C.
Инструкция находится на сайте производителя на русском языке. Купить можно на Ozon, на момент покупки цена была 457р, на момент написания 700р.
В мануале есть кусок кода на python
. Кроме того можно напрямую в терминале работать с термометром:
# запись настройки: каждую секунду отдавать температуру
$ sudo echo "~W1000" > /dev/ttyACM0
# считывать данные датчика
$ sudo cat /dev/ttyACM0
~G27.5
~G27.5
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
- 27.5 °CTEMPer
- 30.25 °CМой кейс использования заключался в измерении и мониторинге температуры плашек ОЗУ. Для начала нужно приколхозить расположить термометры на плашках.
Для легкого Odtemp-1
нашлось место на нижнем наборе плашек, так чтобы сам измерительный прибор касался металическую часть плашки:
Для TEMPer'a
нашлось место вверху:
Для начала хочется убедитсья что этими термометрами вообще можно мониторить. Определить это можно явно понимая динамику температуры и наблюдая эту динамику на показаниях термометров.
Можно дать нагрузку на ОЗУ через stress
, тогда плашки будут работать активнее и предположительно должны начать греться.
Я провел несколько стресс-тестов.
С обдувом температура немного увеличивается, на 2 °C, и ее рост останавливается:
Без обдува температура значительно увеличивается, на 10-12 °C, и ее рост останавливается:
А если убрать stress
и наблюдать за холостой работой системы сначала без обдува, а потом с обдувом, то увидим понижение температуры:
Мониторить температуру плашек ОЗУ
usb-термометрами
можно. Вопрос погрешности и временнОй задержки открыт.
А теперь недельный график:
Когда нет скиллов или встроенных устройств мониторинга температуры, usb-термометры
подходящий вариант для понимания ситуации. Можно получить общую картину.
Через несколько месяцев использования в своем домашнем сервере, я убрал термометры и теперь не мониторю температуру плашек ОЗУ, потому что убедился что температура показанная на графиках в пределах нормы работы LRDIMM
.