RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
mbmon - контроль температуры “железа” под FreeBSD [2009]
Ночь на понедельник выдалась несколько
беспокойной. Около 22.30 сервер был потерян из виду по неизвестной
причине. Удаленный мониторинг буркнул об этом SMS’кой, но, та пришла
видимо с небольшим запозданием и среагировал я на возникшую проблему
уже после одинадцати вечера.
Сервер по локальной сети не пинговался,
маршрутизация во “внешку” тоже не работала. Становилось понятно, что
“ежик сдох”. Опасения подтвердились после того, как к трупу были
подключены монитор и клавиатура. Пациент отреагировал только на RESET.
Естественно, в сложившейся ситуации сразу возник вопрос: “Что же произошло?” Зашел в BIOS в Hardware Monitor и обалдел. Температура CPU 75 градусов
Цельсия. Датчики температуры материнской платы тоже показывали
завышенные значения. Насколько мне не изменяет память, нормальная
температура для Celeron D 2.4 Hz (и ему подобных) должна
лежать в пределах 40 - 60 градусов. Выше - ненормально! Сработала,
видимо, защита от перегрева и процессор просто отключился.
Я сначала усомнился в правильности этих
значений. Слышал не раз, что датчики температуры, которые ставят
производители “железа” очень часто врут и бывает даже что на несколько
порядков. Решил перепровериться. В арсенал электромонтажника я когда-то
покупал себе ампервольтомметр или, как его еще называют, мультиметр.
Ничего особенного. Обычная китайская электроника, работающая от 9-ти
вольтовой кроны, которая, как ни странно, еще ни разу не подводила. В
комплекте с мультиметром шла термопара, с помощью которой можно было
измерять температуру поверхности радиатора на процессоре. Термопарой я
еще ни разу за три года не пользовался, но здесь она мне сослужила
добрую службу. Температура на радиаторе процессора уже выключеной
системы была около 65 градусов. Вывод:показатели не врут и с перегревом надо что-то делать.
А сделать нужно было всего лишь: снять радиатор, снять с него куллер и убрать из-под него отложения пыли. (вообще, у меня в правилах дважды в год очищать системные блоки пылесосом, но каким-то образом отложения накопились раньше срока). Конечно же, не следует забывать подложить после всего горошинку свежей термопасты между поверностью процессора и радиатора.
После такого “секса с железом” в голове проскочила мысль: “А
неплохо бы регулярно мониторить температуру в системнике и в случае
появления тревожных симптомов оперативно на них реагировать“. Сказано - сделано!
Что нам нужно для мониторинга
температуры? Две вещи: то, что будет эту температуру снимать с датчиков
и то, что будет ее визуализировать, например, отрисовывая в красивых
графиках. Второе - это конечно же RRD. А первое?
Для Windows есть масса софта, позволяющего отслеживать температуру всего, чего угодно (главное, чтобы датчики стояли в нужных местах). А для FreeBSD?.. А для FreeBSD, путем недолгого ковыряния в портах /usr/ports/sysutils/, можно отыскать утилиту mbmon, для которой присутствуют как консольная, так и GUI’ная версии.
Port: mbmon-205_4 Path: /usr/ports/sysutils/mbmon Info: A tty motherboard monitor for LM78/79, W8378x, AS99127F, VT82C686 and ADM9240 Maint: ports@FreeBSD.org B-deps: R-deps: WWW: http://www.nt.phys.kyushu-u.ac.jp/shimizu/download/download.html
Port: xmbmon-205_9 Path: /usr/ports/sysutils/xmbmon Info: A X motherboard monitor for LM78/79, W8378x, AS99127F, VT82C686 and ADM9240 Maint: ports@FreeBSD.org B-deps: kbproto-1.0.3 libICE-1.0.4_1,1 libSM-1.0.3_1,1 libX11-1.1.3_1,1 libXau-1.0.3_2 libXdmcp-1.0.2_1 libXt-1.0.5_1 pkg-config-0.23_1 xproto-7.0.10_1 R-deps: kbproto-1.0.3 libICE-1.0.4_1,1 libSM-1.0.3_1,1 libX11-1.1.3_1,1 libXau-1.0.3_2 libXdmcp-1.0.2_1 libXt-1.0.5_1 pkg-config-0.23_1 xproto-7.0.10_1 WWW: http://www.nt.phys.kyushu-u.ac.jp/shimizu/download/download.html
За утилитку благодарим японца Накамуру Казуши (Nakamura Kazushi). И хотя mbmon поддерживает
далеко не весь спектр материнских плат, продающихся нынче на рынке
компьютеров, если у Вас материнка Asus на чипах Intel, mbmon должен с ней работать.
Ставим mbmon без GUI:
# cd /usr/ports/sysutils/mbmon # make install clean
Рекомендую сразу же ознакомиться с файлом /usr/ports/sysutils/mbmon/pkg-descr
Это графическая/консольная мониторилка материнских плат, которая поддерживает LM78/79, WINBond 83781D/83782D/83783S, ASUS 991227F, и VIA VT82C686A/B PC-health чипы посредством трех способов: через шины ISA-I/O, SMBus, VIA-direct.
Запустите "mbmon -h" или "xmbmon -help" чтобы увидеть подсказки по использованию.
***ВНИМАНИЕ***.
Эта программа получает доступ к шине SMBus или же к порту ввода-вывода ISA напрямую с привелегиями суперпользователя и потому может вызвать падение системы. Пожалуйста, протестируйте программу сначала в режиме отладки запустив ее с ключом: "mbmon -d" (или "xmbmon -debug" для GUI версии).
Напугал дядько. Попробовал я запустить ее в режиме “mbmon -d” - нифига страшного не случилось, потому сел читать ман.
Мануал - это конечно хорошо, но перейдем к практике. Как видно из man’а, mbmon может
работать в режиме даемона и выдавать показания по телнет. Это может
пригодиться, если у Вас несколько машин в сети, на которых следует
мониторить температуру. Но я буду использовать mbmon в режиме единоразового запуска.
Путем недолгих экспериментов я выяснил, что с моей материнкой (ASUS P4P800-MX) mbmon будет работать в режиме “ISA I/O port”. Другие способы не поддерживаются. Составим необходимую команду:
TEMP0 - показания температурных датчиков на материнской плате;
TEMP1 - показания температурных датчиков центрального процессора;
TEMP2 - показания температурных датчиков чипов на материнской плате.
Кроме этого, из полученных параметров мы можем извлечь также значения напряжений в той или иной точке системы (для более подробного разбирательства читаем документацию).
А пока, полученных циферок вполне достаточно, чтобы автоматизировать
процесс мониторинга температуры и визуализировать его в виде наглядных
графиков как, например, здесь. Но об этом в следущей публикации.
mbmon был установлен сразу после того, как я “завел” систему после первого дауна (на рис. период “1″)
и тоже сказал, что температура процессора около 75 градусов… Значит
можно считать, что датчики на материнской плате не врут и показания
снимаются верно.
Даунтайм в период “2″ на рисунке - это процесс чистки от пыли и грязи Таким образом в прошлую ночь получилось два даунтайма с интервалами в один час и полчаса.