Чему на самом деле соответствуют различные тепловые зоны?

Я только что закончил сборку новой машины с процессором i9 9900k, процессором с 1 сокетом, 8 ядрами и 16 потоками. Я установил на него Ubuntu Bionic, и вот-вот добавлю проверки температуры процессора.

Тем не менее, когда я бегу cat /sys/class/thermal/thermal_zone*/temp (в соответствии с рекомендациями /questions/347609/kak-mne-uznat-temperaturu-protsessora/347636#347636) я получаю 3 результата:

27800
40000
28000

Правка 1: "правильная" температура процессора - это температура, показанная в thermal_zone2.

Я подумал, что сторонняя программа, такая как acpi, может помочь:

# acpi -t
Thermal 0: ok, 27.8 degrees C

Но этот только дает мне то, что на thermal_zone0, Что представляют другие, особенно thermal_zone1, и как я могу найти больше информации об этом?

Изменить 2: Ответ на то, что представляют другие, можно найти, выполнив следующую команду:

cat /sys/class/thermal/thermal_zone*/type

Что дает мне, в этом случае, следующий вывод:

acpitz
pch_cannonlake
x86_pkg_temp

2 ответа

Точное определение того, что представляет собой данная тепловая зона, определяется драйвером для данной зоны. Различные процессоры и материнские платы делают различные термометры доступными для Linux, поэтому каждый из них имеет свое имя. Каждая из разных зон — это отдельный термометр в системе: «acpitz» — это тот, который доступен через ACPI, а x86_pkg_temp — это температура, экспортируемая спецификацией ядра x86. Датчик ACPI — это датчик материнской платы, который находится рядом с сокетом ЦП, а x86_pkg_temp — внутри самого ЦП.

На основе git grep через дерево исходного кода ядра, 2-й (pch_cannonlake) указывает выходной сигнал термометра термопары, специфичной для Intel, используемой для теплового дросселирования. Однако определение его точного местоположения (как и других) в лучшем случае является обоснованным предположением: оно зависит от набора микросхем и производителя, поэтому вам необходимо ознакомиться с подробной спецификацией и компоновкой вашего чипа.

Попытка проиллюстрировать сказанное...

На моем ноутбуке Asus, работающем под управлением Pop-OS, у меня не менее 7 тепловых зон (*), причем x86_package_temp — #7. Здесь сообщается об одиннадцати (и предоставленный ответ связан с этим).

Эта тепловая зона «x86_package_temp» устанавливается драйвером «x86_pkg_temperature_thermal».

Этот драйвер регистрирует цифровой датчик уровня температуры процессора как тепловую зону с максимум двумя настраиваемыми точками отключения в пользовательском режиме.

https://www.kernel.org/doc/Documentation/thermal/x86_pkg_temperature_thermal

Как было сказано в комментариях и в ответе Калума, атрибут «тип» тепловой зоны определяет датчики, участвующие в измерении температуры, и где этот датчик применяется, но соответствующая строка может потребовать некоторых исследований (например,= ?), если только это не достаточно явно или документировано.


  • Атрибуты термальной зоны *

type: строки, обозначающие тип тепловой зоны. Его предоставляет водитель термальной зоны при регистрации. Например: «acpitz» означает, что это тепловое устройство ACPI. Чтобы обеспечить соответствие атрибуту hwmon sys; это должна быть короткая строка в нижнем регистре, не содержащая пробелов и тире.

https://www.kernel.org/doc/Documentation/thermal/sysfs-api.txt

(*)

      $ cat /sys/class/thermal/thermal_zone*/type
acpitz
INT3400 Thermal
TMEM
TSKN
TAMB
T_VR
TEFN
x86_pkg_temp
Другие вопросы по тегам