Трудно не согласиться с тем, что современное оборудование, не имеющее «на борту» температурные датчики может считаться «современным» и вообще полноценным. Ведь именно от температурных параметров зависит эффективная работа самого «железа». В Linux-системах существует масса свободных инструментов для доступа к температурным характеристикам работы оборудования и их мониторинга. О них более подробно и будет изложено в данной статье.
Зачем следить за температурой оборудования?
Обычных пользователей этот вопрос, конечно, может совсем и не волновать. За температурами следят администраторы, геймеры, тестеры и оверклокеры. Представитель из каждой из обозначенных категорий деятельности делает это в целях, непосредственно связанных с родом деятельности. Так, например, для администратора критически важно не допустить перегрева, иначе велик риск завалить систему. Для тестеров важно выявить стабильные характеристики режимов работы оборудования в различных режимах использования. В том числе и температурных. Практически во всех случаях, когда речь идёт о комнатном использовании оборудования, в частности, компьютерного железа, важно не допускать именно высоких температур. Ведь вся современная электроника построена на полупроводниках. Для которых «комфортным» для рабочих температур является диапазон от -40 до +60 градусов по Цельсию. По этой причине все геймеры и оверклокеры так стремятся оснастить свои системы максимально эффективными системами охлаждения. Подобный подход позволяет существенно компенсировать температурный нагрев в самых требовательных приложениях и играх. А также при разгоне тех же процессоров и графических чипов.
Утилиты в Linux для доступа к температурным датчикам
В настоящее время среди всего разнообразия, для Linux существует лишь одна по-настоящему универсальная и свободная утилита, предоставляющая доступ к целому комплексу доступных в системе датчиков. И не только температурных. Это Lm-sensors. Кроме неё также полезно использовать HDDTemp и Udisks2. Которые, как понятно из названий, работают с накопителями — HDD и/или SSD. Эти утилиты дополняют функционал Lm-sensors, предоставляя доступ к температурам накопителей. С чем сама Lm-sensors справляется плохо.
Lm-Sensors
Хотя Lm-sensors и не может полноценно читать информацию о температуре накопителей, но всё же обладает довольно мощными возможностями. Она позволяет также узнать данные о частоте вращения установленных в системе вентиляторов. При этом доступ возможен в том числе и к датчикам на периферийных устройствах. А не только на основной (материнской) плате.
Эта утилита обновляется разработчиками не так часто, но всё-таки ещё поддерживается. Далеко не всегда можно поспеть за самыми новыми веяниями в сфере компьютерного «железа», получить доступ к его спецификации, разработать и протестировать соответствующие обновления. Однако, даже в таких условиях Lm-sensors позволяет получить данные о температурах всех критически важных компонентах системы. Таких как CPU, GPU и основных параметрах чипсета.
Lm-sensors доступна практически в любом дистрибутиве Linux в стандартном репозитории. Обычно соответствующий пакет называется lm-sensors. Для его установки, например, в системах Ubuntu следует выполнить команду:
$ sudo apt-get install lm-sensors
Сразу после установки Lm-sensors настоятельно рекомендуется выполнить начальную конфигурацию утилиты. Это необходимо для полного детектирования доступных в системе датчиков. Иначе информация, выдаваемая утилитой lm-sensors будет, скорее всего, неполной. Следующая команда поможет просканировать доступное оборудование, а также определить наиболее подходящий драйвер для считывания параметров датчиков:
$ sudo sensors-detect
Дальше необходимо на все выдаваемые запросы отвечать утвердительно, т. е. «yes». Поскольку в этом случае сканирование будет полноценным. Следует отметить одну важную деталь: иногда запросы предлагают разное написание ответов, это может быть «yes», «YES» или даже «Yes». Вводить ответ нужно в точности как он предложен в конкретном запросе — это влияет на результат сканирования. В завершении утилита предложит установить модуль ядра, содержащий оптимальный драйвер для считывания показаний датчиков для конкретной системы:
Driver `nct7802': * Bus `SMBus PIIX4 adapter port 0 at 0b00' Busdriver `i2c_piix4', I2C address 0x2a Chip `Nuvoton NCT7802Y' (confidence: 8) To load everything that is needed, add this to /etc/modules: #----cut here---- # Chip drivers nct7802 #----cut here---- If you have some drivers built into your kernel, the list above will contain too many modules. Skip the appropriate ones! Do you want to add these lines automatically to /etc/modules? (yes/NO)
В данном случае, как можно видеть, lm-sensors в качестве оптимального драйвера определила «nct7802». Также приведены инструкции для ручного добавления модуля этого драйвера в сценарий загрузки ядром. Вместе с тем также возможна автоматическая правка файла /etc/modules.
Что более предпочтительнее и рекомендуется поступать именно таким образом. Далее необходимо перезагрузить систему и далее, выполнив следующую команду, убедиться, что модуль «nct7802» загружен:
lsmod | grep nct7802 nct7802 36864 0
Данный вывод говорит о том, что модуль загружен. Теперь, для просмотра значений всех доступных для утилиты lm-sensors (тех, что она смогла обнаружить ранее при сканировании) достаточно выполнить команду:
$ sensors k10temp-pci-00c3 Adapter: PCI adapter Tdie: +36.5°C (high = +70.0°C) Tctl: +36.5°C amdgpu-pci-1f00 Adapter: PCI adapter vddgfx: +0.75 V fan1: 1166 RPM (min = 300 RPM, max = 3300 RPM) temp1: +37.0°C (crit = +91.0°C, hyst = -273.1°C) power1: 3.00 W (cap = 240.00 W) iwlwifi-virtual-0 Adapter: Virtual device temp1: N/A nct7802-i2c-0-2a Adapter: SMBus PIIX4 adapter port 0 at 0b00 in0: +3.39 V (min = +0.00 V, max = +4.09 V) in1: +0.75 V in2: +1.05 V (min = +0.00 V, max = +2.05 V) in3: +0.91 V (min = +0.00 V, max = +2.05 V) in4: +1.23 V (min = +0.00 V, max = +2.05 V) fan1: 0 RPM (min = 0 RPM) fan2: 0 RPM (min = 0 RPM) fan3: 0 RPM (min = 0 RPM) temp4: +43.0°C (low = +0.0°C, high = +85.0°C) (crit = +100.0°C) temp6: +0.0°C
Как видно, набор обнаруженных датчиков довольно внушительный. Есть даже показания температуры для модуля Wi-Fi. Не хватает, правда, значений оборотов охлаждающего вентилятора процессора и значений температур зон VRM. Но это уже издержки свободного ПО.
Для того, чтобы иметь возможность наблюдения за параметрами в непрерывном режиме, нужно выполнить команду sensors совместно с командой watch:
$ watch -n3 sensors
Здесь ключ -n задаёт периодичность обновления вывода, в данном случае это 3 секунды. Если он не задан, то по-умолчанию обновление будет происходить каждые 2 секунды. Для выхода из непрерывного режима нужно нажать сочетание клавиш <Ctrl + C>.
HDDTemp
Для мониторинга температур устройств хранения. Например жестких дисков и/или твердотельных накопителей удобно использовать утилиту hddtemp. Соответствующий пакет «hddtemp» также доступен для большинства Linux-дистрибутивов. Для доступа к показаниям температуры конкретного устройства нужно выполнить команду:
$ watch hddtemp /dev/sdb Every 2,0s: hddtemp /dev/sdb MSI-M7-ROSA: Wed Jul 31 15:12:15 2019 /dev/sdb: CT240BX500SSD1: 46°C
Здесь, как можно догадаться, в качестве параметра передаётся интересующее устройство. В данном случае это/dev/sdb.
Для того, чтобы данные получаемые утилитой hddtemp могли использовать другие программы мониторинга (например psensor), необходимо запустить hddtemp в качестве демона:
$ sudo hddtemp -d /dev/sdb
Это команду необходимо выполнить для всех устройств, для которых необходимо мониторить значения температур.
Psensor – GUI-мониторинг температур в Linux
После того, как установлены и настроены все основные инструменты для мониторинга температур. Такие как lm-sensors и hddtemp, можно (и даже нужно) для удобства вывести это в одном приложении с использованием графиков и лог-файлов. Для этого предназначена очень популярная в среде Linux утилита psensor. Она обладает графическим пользовательским интерфейсом и способна агрегировать данные от всех самых популярных утилит-провайдеров всевозможных системных параметров, таких как температуры, обороты вентиляторов, объём RAM и т. д. Пакет для установки также доступен практически в каждом дистрибутиве Linux и обычно называется «psensor».
Psensor умеет довольно гибко управлять настройкой и отображением значений датчиков. Разобраться в пользовательском интерфейсе не составляет особого труда, он довольно прост:
При запуске psensor обычно располагается в системном трее в виде значка термометра. Вызов главного окна psensor осуществляется из контекстного меню значка.
Заключение
В заключение стоит напомнить, что утилиты lm-sensors и hddtemp на сегодняшний день являются основными и самыми универсальными инструментами для мониторинга системных параметров в Linux. Эти утилиты консольные и являются поставщиками данных для инструментов с графическим интерфейсом: виджеты рабочего стола, сторонние утилиты-агрегаторы, такие как psensor. Ещё одним очень мощным агрегатором является Сonky. Но это куда более сложный в настройке инструмент, заслуживающий отдельного рассмотрения.