Sr1400

http://sys.dmitrow.com/node/92

 Озадачился мониторингом температуры процессора на серверах. Сам парк серверов представляет из себя сборную солянку, а ОСи - в основном FreeBSD, 6.2 и 7.2. Процессоры - Intel.

На FreeBSD 7.2 все решилось достаточно просто.

1. Собираем ядро с поддержкой coretemp

device coretemp

2. Перезагружаемся и смотрим:

# sysctl -a | grep hw.acpi.thermal.tz0.temperature hw.acpi.thermal.tz0.temperature: 40.0C

Подробности:

CORETEMP(4) FreeBSD Kernel Interfaces Manual CORETEMP(4)
 * 1) man coretemp

NAME coretemp -- device driver for Intel Core on-die digital thermal sensor ... HISTORY coretemp driver first appeared in FreeBSD 7.0.

UPDATE: Не все так просто оказалось. Работа этого варианта зависит от реализации acpi производителя материнской платы. Собранная статистика.

Самое интересное - это FreeBSD 6.2, на материнских платах Intel ( SE7520JR2 ). Сразу скажу - использование healthd, lmmon, mbmon - вменяемых значений не дало.

Найдено и опробовано следующее решение (IPMI, пакет freeipmi):

# uname -rpm 6.2-RELEASE-p12 i386 i386

1. Пересобираем ядро с поддержкой следующих девайсов:

device smb device smbus # System management bus device intpm # Intel power management device iicbus # I2C bus system device iicsmb # I2C to SMB bridge device iicbb # I2C generic bit-banging driver

2. Загружаем два ipmi модуля:

# kldload ichsmb.ko # kldload ipmi.ko  # kldstat Id Refs Address Size Name 1 11 0xc0400000 529f78 kernel 6 1 0xca101000 4000 ichsmb.ko 7 1 0xca10d000 a000 ipmi.ko  ....

После добавления этих модулей смотрим /var/log/messages:

# tail /var/log/messages kernel: ichsmb0: port 0×540-0×55f irq 17 at device 31.3 on pci0 kernel: ichsmb0: [GIANT-LOCKED] kernel: smbus0: on ichsmb0 kernel: smb0: on smbus0 kernel: ipmi0: on smbus0 kernel: ipmi0: SSIF mode found at address 0×42 on smbus kernel: ipmi0: IPMI device rev. 1, firmware rev. 2.81, version 1.5 kernel: ipmi0: Number of channels 0 kernel: ipmi0: Attached watchdog

3. Если все прошло хорошо, значит осталось установить утилиты для работы с IPMI. Я использовал пакет freeipmi.

# cd /usr/ports/sysutils/freeipmi # make install clean

4. Проверяем работает ли то что нам нужно. Все сенсоры:

# ipmi-sensors

...  25: Sys Fan 2A (Fan): 10593.22 RPM (NA/4237.29): [OK] 26: Sys Fan 2B (Fan): 7369.20 RPM (NA/3026.63): [OK] 27: Sys Fan 3A (Fan): 10593.22 RPM (NA/4237.29): [OK] 28: Sys Fan 3B (Fan): 7369.20 RPM (NA/3026.63): [OK] 29: Sys PCI Fan (Fan): 11299.44 RPM (NA/3531.07): [OK] 30: CPU 1 Therm Ctrl (Temperature): 0.00 unspecified (NA/79.95): [OK] 31: CPU 2 Therm Ctrl (Temperature): 0.00 unspecified (NA/79.95): [OK] 32: Proc1 Core Temp (Temperature): 43.00 C (5.00/99.00): [OK] 33: Proc2 Core Temp (Temperature): 44.00 C (5.00/99.00): [OK] 34: CPU1 12V (Voltage): 12.21 V (10.91/13.14): [OK] 35: CPU2 12V (Voltage): 12.15 V (10.91/13.14): [OK] 36: FrontPanel Temp (Temperature): 25.00 C (0.00/48.00): [OK] 37: Scrty Violation (Platform Chassis Intrusion): [OK] …

Или только те что интересуют:

# ipmi-sensors -s 32,33 32: Proc1 Core Temp (Temperature): 43.00 C (5.00/99.00): [OK] 33: Proc2 Core Temp (Temperature): 44.00 C (5.00/99.00): [OK]

Не забываем добавить в /boot/loader.conf загрузку модулей:

# echo 'ichsmb_load="YES"' >> /boot/loader.conf # echo 'ipmi_load="YES"' >> /boot/loader.conf

Вот собственно и все!

