Температура и троттлинг
Питание и ACPI #linux #notebook #power #thermal
Температура и троттлинг
Температура в Linux живёт в двух местах: /sys/class/hwmon/ (датчики) и /sys/class/thermal/ (тепловые зоны и устройства охлаждения). Вторая часть ближе к ACPI: именно из таблиц прошивки ядро узнаёт, какие датчики есть, при какой температуре включать вентилятор и когда снижать частоту.
Как устроено
Ядро делит тепловую подсистему на две сущности (описано в документации):
- thermal zone (
/sys/class/thermal/thermal_zoneN/) — датчик температуры с набором порогов (trip points). Основные атрибуты:type— тип зоны,temp— текущая температура в тысячных долях градуса,policy— тепловой «губернатор», который решает, что делать,trip_point_N_tempиtrip_point_N_type— пороги (passive,active0,critical…).
- cooling device (
/sys/class/thermal/cooling_deviceN/) — то, чем можно охлаждать: вентилятор, процессор, ограничитель мощности. Атрибутыtype,max_state,cur_state.
Связь между ними — тоже в sysfs: cdevN в зоне и cdevN_trip_point показывают, какое устройство привязано к какому порогу.
Что видно на нашей машине
Dell Latitude 7400, Ubuntu 26.04:
thermal_zone0 acpitz 25,0 °C
thermal_zone1 pch_cannonlake 41,0 °C
thermal_zone2 INT3400 Thermal 20,0 °C
thermal_zone3 TMEM 33,1 °C
thermal_zone4 TSKN 37,1 °C
thermal_zone5 NGFF 31,1 °C
thermal_zone6 B0D4 43,1 °C
thermal_zone7 iwlwifi_1 38,0 °C
thermal_zone8 x86_pkg_temp 47,0 °C
Расшифровка по названиям:
acpitz— общая зона ACPI;pch_cannonlake— чипсет (PCH), драйверintel_pch_thermal;x86_pkg_temp— температура процессорного пакета;INT3400 Thermal— контейнер политик Intel DPTF (Dynamic Platform and Thermal Framework): платформенный набор правил питания и охлаждения;TMEM,TSKN,B0D4,NGFF— датчики конкретных мест платы (память, корпус, зона рядом с накопителем);iwlwifi_1— Wi-Fi модуль.
Устройства охлаждения:
Processor (8 штук, по одному на логическое ядро) 0/3
intel_powerclamp 0/100
TCC Offset 2/63
dell-smm-fan1 0/2
PCIe_Port_Link_Speed_0000:00:1c.0 0/2
Processor — снижение частоты процессора, dell-smm-fan1 — вентилятор, TCC Offset — сдвиг порога тепловой защиты, PCIe_Port_Link_Speed — ограничение скорости PCIe-порта как способ уменьшить нагрев.
Что такое TCC offset
TCC (Thermal Control Circuit) — аппаратная защита процессора от перегрева. «Смещение» (offset) задаёт, насколько раньше критической температуры начнётся троттлинг. В документации ядра атрибут описан так: tcc_offset_degree_celsius — «TCC offset от критической температуры, при которой железо начнёт ограничивать процессор». На нашей машине текущее значение — 2 из 63.
Практический смысл: увеличивая offset, можно заставить процессор сбрасывать частоту раньше и тем самым держать корпус холоднее — ценой производительности.
Предупреждение про S0ix
Драйвер intel_pch_thermal умеет не только мерить температуру, но и предупреждать, что чипсет слишком горячий для энергосбережения. В журнале это выглядит так:
intel_pch_thermal 0000:00:12.0: CPU-PCH current temp [57C] higher than
the threshold temp [50C], S0ix might fail. Start cooling...
S0ix — состояния низкого энергопотребления, на которых держится режим сна s2idle (см. Сон и пробуждение). Если хаб горячее порога, платформа может не уйти в S0ix — и тогда ноутбук будет тратить батарею во сне или, хуже, зависать при пробуждении.
Как посмотреть температуру по-человечески
sudo apt install lm-sensors
sudo sensors-detect # один раз, отвечать на вопросы по умолчанию
sensors
Ещё два полезных инструмента:
cat /sys/class/thermal/thermal_zone*/temp— сырые значения в тысячных долях градуса;turbostat(пакетlinux-tools-common) — частоты, C-состояния и температура процессора в динамике.
Если ноутбук греется
Порядок действий от простого к сложному:
- Посмотреть, какая зона горячая. Если
x86_pkg_tempпод 90–100 °C — это процессор, еслиpch_cannonlake— чипсет, еслиiwlwifi_1— Wi-Fi. - Проверить, крутится ли вентилятор:
cur_stateуdell-smm-fan1(или аналогичного устройства). - Почистить систему охлаждения и заменить термопасту — для ноутбука с несколькими годами работы это чаще всего и есть решение.
- Проверить, не мешает ли пыль и не перекрыты ли вентиляционные отверстия.
- Только после этого трогать
TCC offset: это способ жить с перегревом, а не лечить его.
Источники
- Ядро Linux, «Generic Thermal Sysfs driver How To» — зоны, пороги, cooling devices: https://docs.kernel.org/driver-api/thermal/sysfs-api.html.
- Ядро Linux, «Intel Dynamic Platform and Thermal Framework Sysfs Interface» —
tcc_offset_degree_celsius, INT3400: https://docs.kernel.org/driver-api/thermal/intel_dptf.html. - Ядро Linux, «Low Power Idle Table (LPIT)» — S0ix и SLP_S0: https://docs.kernel.org/firmware-guide/acpi/lpit.html.
- Локальные измерения: Dell Latitude 7400, Ubuntu 26.04, ядро 7.0.0-43 (ноябрь 2026).
Комментарии
Пока комментариев нет.