Страницы

воскресенье, 31 декабря 2017 г.

Мониторинг температур и напряжений на микросервере HP Proliant Microserver Gen7 sensors

После обновления ядра Linux на микросервере HP ProLiant Microserver Gen7, удалось настроить просмотр напряжений и температур, с помощью утилиты sensors.

Спецификации на железо микросервера ищутся по ключевым словам в поисковой системе Google:
"AMD RS785E databook filetype:pdf"
"AMD SB850M databook filetype:pdf"
"Nuvoton W83795ADG filetype:pdf"

Конфигурация приведена для домашнего использования и полагаться на эти данные неразумно.

Конфигурационный файл: /etc/sensors.d/hp-microserver-gen7.conf

# Конфигурация сенсоров для микросервера HP Microserver Gen7
# Процесор AMD Turion II Neo (K625)
# Для работы драйвера мониторинга w83795adg, нужно ядро выше 4.5 версии.
#
# AMD RS785E - northbridge, 55 nm, 1.1V CMOS tech
# 5.2.1. RS785E Thermal Limits
# Operating Case Temperature 95 MAX
# Absolute Rated Junction Temperature 115 MAX
# Ambient Temperature 45 MAX
# 5.2.2. Thermal Diode Characteristics
# The RS785E has on-die thermal diode

#
# AMD SB850M - southbridge
#
# Чип мониторинга напряжений, вентиляторов, температур: Nuvoton W83795ADG
# Диапазон измеряемого напряжения VSEN#, 0-2.048 V, ±10 mV
# Диапазон измеряемой температуры 25~90 градусов Цельсия, ±1 г.Ц.
#
# Дата: 31 декабря 2017 года
# сервер: microserver
# Поместить этот файл в /etc/sensors.d/
# URL: https://gimmor.blogspot.com/2017/12/hp-proliant-microserver-gen7-sensors.html 


chip "w83795adg-*"

label in0 "CPU Core VID"
set in0_min 0.7
set in0_max 0.9

# JEDEC standard 1.5V ± 0.075V Power Supply
label in1 "DDR3 Memory voltage"
compute in1 @, @
set in1_min  1.5-0.075
set in1_max  1.5+0.075

label in2 "PCI-E Gen2 VDDC,VDDHT, 1.1V"
set in2_min 1.045
set in2_max 1.155

label in3 "VSEN ?"
label in12 "ATX +3.3V"
set in12_min 3.14
set in12_max 3.47

# in13 - Линия питания +3.3VSB (±5%)
label in13 "ATX +3.3V StandBy"
set in13_min 3.14
set in13_max 3.47

label temp1 "CPU on-die temperature"
set temp1_min 0
set temp1_max 95
set temp1_crit 105

label temp2 "NB RS785E on-die temperature"
set temp2_min 0
set temp2_max 95
set temp2_crit 115
label temp5 "Motherboard ambient temperature"
set temp5_min 0
set temp5_max 45

label fan1 "120 mm fan"
# CASEOPEN# signal
label intrusion0 "Locked"
set intrusion0_alarm 0
set intrusion0_beep 0


chip "jc42-*"
label temp1 "Integrated Radeon HD4200 graphics temperature"
set temp1_min 0
set temp1_max 95
set temp1_crit 115


chip "k10temp-pci-00c3"
label temp1 "AMD CPU internal temperature"

Один вывод in3 остался неопределённым.

Сервер отслеживает напряжения ядра процессора (0.8V), памяти (1.5V), ядра северного моста, шины hypertransport и pci-e (1.1V) и основных питающих напряжений +3.3V.
Сервер отслеживает температуры подложки процессора (cpu on-die), подложки северного моста (nb on-die) и системной платы. Где конкретно расположен датчик системной платы остаётся не выясненным.
Наиболее горячий (по показаниям), в обычном режиме простоя - северный мост (NB).
Критическая температура системной платы определена по максимальной окружающей температуре для северного моста (NB Ambient temperature).
Также присутствует датчик температуры встроенного графического ядра ATI Radeon 4200, но уже на чипе "jc42-*", по другому адресу на шине i2c.
Один системный вентилятор.

Вывод команды sensors:

root@microserver:~# sensors
k10temp-pci-00c3
Adapter: PCI adapter
AMD CPU internal temperature:  +38.0°C  (high = +70.0°C)
                                        (crit = +100.0°C, hyst = +95.0°C)

jc42-i2c-5-18
Adapter: SMBus PIIX4 adapter port 0 at 0b00
Integrated Radeon HD4200 graphics temperature:  +31.5°C  (low  =  +0.0°C)
                                                         (high = +95.0°C, hyst = +95.0°C)
                                                         (crit = +115.0°C, hyst = +115.0°C)

w83795adg-i2c-6-2f
Adapter: SMBus PIIX4 adapter port 2 at 0b00
CPU Core VID:                     +0.79 V  (min =  +0.70 V, max =  +0.90 V)
DDR3 Memory voltage:              +1.51 V  (min =  +1.42 V, max =  +1.57 V)
PCI-E Gen2 VDDC,VDDHT, 1.1V:      +1.10 V  (min =  +1.04 V, max =  +1.15 V)
VSEN ?:                           +0.98 V  (min =  +0.00 V, max =  +2.05 V)
ATX +3.3V:                        +3.31 V  (min =  +3.14 V, max =  +3.47 V)
ATX +3.3V StandBy:                +3.25 V  (min =  +3.14 V, max =  +3.47 V)
120 mm fan:                       747 RPM  (min =  329 RPM)
CPU on-die temperature:           +35.2°C  (high = +95.0°C, hyst = +109.0°C)
                                           (crit = +105.0°C, hyst = +109.0°C)  sensor = thermal diode
NB RS785E on-die temperature:     +45.5°C  (high = +95.0°C, hyst = +105.0°C)
                                           (crit = +115.0°C, hyst = +105.0°C)  sensor = thermal diode
Motherboard ambient temperature:  +25.2°C  (high = +45.0°C, hyst = +39.0°C)
                                           (crit = +44.0°C, hyst = +44.0°C)  sensor = thermistor
Locked:                 OK

root@microserver:~#


Если датчик открытия корпуса сработал (Locked: BAD), то нужно в BIOS очистить события (events).

※※※

Свежие ядра Linux на свежий год, в Ubuntu 16.04.3 LTS

Свежие ядра Linux часто исправляют застарелые программные ошибки и недоработки. Вот и под наступающий новый 2018 год, решил закатить под ёлку микросерверу HP ProLiant Microserver N40L, свежее декабрьское ядро Linux, версии 4.14.
Оно исправить проблему с чипом мониторинга и позволить мониторить напряжения и температуры системы. Рабочий драйвер для чипа, доступен только в ядрах версии 4.5 и выше, а т.к. в GNU/Linux Ubuntu Server 16.04.3 LTS идёт версия 4.4, то пришлось заняться.

Волшебная ссылка на хранилище разнообразных ядер, собранных командой Canonical, для Ubuntu:
http://kernel.ubuntu.com/~kernel-ppa/mainline/

Я выбрал версию 4.14. http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.14/

Установка в систему прошла успешно и беспроблемно.
Надо скачать заголовки (headers) и само ядро (image). Устанавливать под суперпользователем root.
Пример для AMD64.

# wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.14/linux-headers-4.14.0-041400_4.14.0-041400.201711122031_all.deb

# wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.14/linux-headers-4.14.0-041400-generic_4.14.0-041400.201711122031_amd64.deb

# wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.14/linux-image-4.14.0-041400-generic_4.14.0-041400.201711122031_amd64.deb

После этого установить в систему одной командой, находясь в каталоге, где лежат скачанные пакеты нового ядра.

# dpkg -i Linux*4.14*.deb

Установка настраивает загрузчик и всё такое и после перезагрузки можно видеть изменения. 

$ uname -a

Удалить если что-то пошло не так, загрузившись со старым ядром:

# apt remove linux-headers-4.14*.deb  linux-image-4.14*.deb


※※※