Мониторинг температуры CPU. FreeBSD
Озадачился мониторингом температуры процессора на серверах.
Сам парк серверов представляет из себя сборную солянку, а ОСи - в основном 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
Подробности:
# man coretemp
CORETEMP(4) FreeBSD Kernel Interfaces Manual CORETEMP(4)
NAME
coretemp -- device driver for Intel Core on-die digital thermal sensor
...
HISTORY
The 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:
kernel: ichsmb0: [GIANT-LOCKED]
kernel: smbus0:
kernel: smb0:
kernel: ipmi0:
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
Вот собственно и все
епрст! hw.acpi.thermal.tz0.temperature: 78.0C
ну а что.. быват
А у меня не работает ;(
sysctl -a | grep hw.acpi.thermal.tz0.temperature
hw.acpi.thermal.tz0.temperature: 8.3C
ipmi-sensors
1: UID Light (OEM Reserved): [OEM State = 0000h]
2: Int. Health LED (OEM Reserved): [OEM State = 0000h]
3: Ext. Health LED (OEM Reserved): [OEM State = 0000h]
4: Power Supply 1 (Power Supply): [Presence detected]
5: Power Supply 2 (Power Supply): [Presence detected]
6: Power Supplies (Power Supply): [Fully Redundant]
8: VRM 1 (Power Unit): [Device Inserted/Device Present]
9: VRM 2 (Power Unit): [Device Inserted/Device Present]
10: Fan Block 1 (Fan): [transition to Running]
11: Fan Block 2 (Fan): [transition to Running]
12: Fan Block 3 (Fan): [transition to Running]
13: Fan Blocks (Fan): [Fully Redundant]
да..
вот это - “sysctl -a | grep hw.acpi.thermal.tz0.temperature”
работает далеко не везде…
насколько я понял - это зависит от производителя и реализации acpi.
Сейчас собираю статистику где работает , где нет.
Pentium(R) D CPU 3.20GHz , MSI MS-9218 - не работает
Pentium(R) D CPU 3.00GHz , MSI MS-9218 - не работает
Celeron(R) CPU 2.40GHz , MSI MS-9249 - работает
Pentium(R) 4 CPU 3.00GHz , MSI MS-9249 - работает
Pentium(R) 4 CPU 3.00GHz , MSI MS-7037 - работает
Core(TM)2 Duo CPU E7400 @ 2.80GHz, Asus P5KPL-AM - работает
а ipmi - работает только если есть поддержка ipmi на материнской плате
пока на всех intel материнках работало