Каждый должен понимать тепловые характеристики своего компьютера и обеспечивать адекватную защиту. Часто пользователи не знают, насколько быстро может увеличиться температура корпуса процессора при ступенчатой нагрузке. Пример с моего тестового сервера 20.04:
doug@s19:~$ sudo turbostat --quiet --Summary --show PkgWatt,PkgTmp --interval 0.1
PkgTmp PkgWatt
33 1,88
33 1,69
33 1,56
33 1,74
49 24,99 800 градусов в секунду
57 133,28 80 градусов в секунду
61 133,66 40 градусов в секунду
61 132,58 0 градусов в секунду
63 133,57
64 134,12
Нагрузка была приложена примерно на 4/5 пути за время выборки (25/(133,5 - 1,7) ~= 20%, или 4/5), и температура уже повысилась на 16 градусов, или 800 градусов в секунду. Нагрузкой здесь был тест на пытку Prime95, подтест на максимальную температуру. Компьютер в примере имеет водяное охлаждение, водяной насос всегда работает на максимальной скорости. Процессор i5-10600K.
Для материнских плат ASUS помните, что датчик вентилятора процессора на самом деле является внешним термистором, который будет отставать от фактической температуры корпуса процессора как по времени, так и по величине. На моей материнской плате ASUS при большой нагрузке датчик процессорного вентилятора отстает от фактической температуры процессора на 12 градусов.
В конце концов, температура корпуса процессора может достичь предела выключения так быстро, что различные программы мониторинга или демоны даже не заметят этого. Иногда тепловая защита должна среагировать раньше, чтобы успеть сработать до того, как любое превышение температуры вызовет отключение.
Метод 1: Термальный
<?xml version="1.0"?>
<!--
use "man thermal-conf.xml" for details
-->
<!-- BEGIN -->
<ThermalConfiguration>
<Platform>
<Name>Overide CPU default passive</Name>
<ProductName>*</ProductName>
<Preference>QUIET</Preference>
<ThermalZones>
<ThermalZone>
<Type>cpu</Type>
<TripPoints>
<TripPoint>
<Temperature>41000</Temperature>
<type>passive</type>
</TripPoint>
</TripPoints>
</ThermalZone>
</ThermalZones>
</Platform>
</ThermalConfiguration>
<!-- END -->
Примечание. Я использую смехотворно низкую точку срабатывания 41 градус, потому что моя система имеет водяное охлаждение, и я не могу достичь желаемой примерной температуры.
doug@s19:~$ sudo systemctl запустить термик
doug@s19:~$ sudo systemctl статус термальный
▪ Thermald.service — служба Thermal Daemon
Загружено: загружено (/lib/systemd/system/thermald.service; отключено; предустановка поставщика: включена)
Активно: активно (работает) с пятницы 05.11.2021 07:41:45 PDT; 17 сек. назад
Основной PID: 3461 (термический)
Заданий: 2 (лимит: 38214)
Память: 2,2 м
Группа CG: /system.slice/thermald.service
ââ3461 /usr/sbin/thermald --systemd --dbus-enable --adaptive
05 ноября 07:41:45 s19 systemd[1]: Запуск службы Thermal Daemon...
05 ноября, 07:41:45 s19 systemd[1]: запущена служба Thermal Daemon.
05 ноя 07:41:45 s19 thermod[3461]: 22 уровня CPUID; семейство: модель: степпинг 0x6: a5: 5 (6: 165: 5)
05 ноя 07:41:45 s19 thermod[3461]: 22 уровня CPUID; семейство: модель: степпинг 0x6: a5: 5 (6: 165: 5)
05 ноя 07:41:45 s19 thermod[3461]: Режим опроса включен: 4
05 ноября 07:41:45 s19 thermod [3461]: идентификатор датчика 5: нет temp sysfs для чтения необработанной температуры
05 ноября 07:41:45 s19 thermod [3461]: идентификатор датчика 5: нет temp sysfs для чтения необработанной температуры
05 ноября 07:41:45 s19 thermod [3461]: идентификатор датчика 5: нет temp sysfs для чтения необработанной температуры
05 ноября 07:41:45 s19 thermod[3461]: XML-зона: недопустимый тип датчика []
Несмотря на то, что состояние Thermald показывает некоторые жалобы, на самом деле оно работает правильно, хотя и немного медленно реагирует:
doug@s19:~$ sudo turbostat --quiet --Summary --show PkgWatt,PkgTmp --interval 1
PkgTmp PkgWatt
33 1,44
33 1,34
33 1,33
58 63,26
61 114,43
61 114,68
48 86,59
47 55,48
47 55,53
41 42,77
43 33,43
41 34.30
41 28.04
43 33,63
40 34,45
44 33,57
41 34,40
44 33,85
34 14.50
34 1,33
34 1,33
Отрегулируйте точку срабатывания по мере необходимости, чтобы получить максимальную отдачу от вашей системы, при этом не допуская превышения верхней точки, вызывающей отключение. Слишком низкая точка срабатывания может снизить производительность системы до нежелательного уровня.
Метод 2: Смещение TCC
Сначала найдите, какое охлаждающее устройство:
doug@s19:~$ grep . /sys/devices/virtual/thermal/cooling_device*/тип
/sys/devices/virtual/thermal/cooling_device0/тип:Вентилятор
/sys/devices/virtual/thermal/cooling_device10/тип: Процессор
/sys/devices/virtual/thermal/cooling_device11/тип: Процессор
/sys/devices/virtual/thermal/cooling_device12/тип: Процессор
/sys/devices/virtual/thermal/cooling_device13/тип: Процессор
/sys/devices/virtual/thermal/cooling_device14/тип: Процессор
/sys/devices/virtual/thermal/cooling_device15/тип: Процессор
/sys/devices/virtual/thermal/cooling_device16/тип: Процессор
/sys/devices/virtual/thermal/cooling_device17/type:intel_powerclamp
/sys/devices/virtual/thermal/cooling_device18/type:TCC Offset
/sys/devices/virtual/thermal/cooling_device1/тип: Вентилятор
/sys/devices/virtual/thermal/cooling_device2/тип:Вентилятор
/sys/devices/virtual/thermal/cooling_device3/тип:Вентилятор
/sys/devices/virtual/thermal/cooling_device4/тип:Вентилятор
/sys/devices/virtual/thermal/cooling_device5/тип: Процессор
/sys/devices/virtual/thermal/cooling_device6/тип: Процессор
/sys/devices/virtual/thermal/cooling_device7/тип: Процессор
/sys/devices/virtual/thermal/cooling_device8/тип: Процессор
/sys/devices/virtual/thermal/cooling_device9/тип: Процессор
Это устройство 18. Установите смещение, а затем проверьте его через турбостат без опции --quiet:
doug@s19:~$ echo 59 | sudo tee /sys/devices/virtual/thermal/cooling_device18/cur_state
59
doug@s19:~$ sudo /home/doug/temp-k-git/linux/tools/power/x86/turbostat/turbostat --Summary --show Bzy_MHz,PkgWatt,PkgTmp --interval 0.1
версия турбостата 21.05.04 — Лен Браун <[email protected]>
CPUID(0): уровни GenuineIntel 0x16 CPUID
CPUID(1): семейство:модель:степпинг 0x6:a5:5 (6:165:5) микрокод 0xec
...
cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x3b641422 (41 C) (100 по умолчанию - 59 смещение)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x883f0800 (37 С)
...
Bzy_MHz PkgTmp PkgWatt
800 33 1,35
800 33 1,34
800 34 1,40
4187 49 86,23
4100 52 91,72
4100 53 91,29
...
Обратите внимание, что дросселирование происходит практически мгновенно, 4,8 ГГц было бы частотой процессора без регулирования. Обратите внимание, что предел дросселирования для моего процессора (не для всех процессоров) — это максимальная тактовая частота без турбонаддува, равная 4,1 ГГц, поэтому он не может достичь смехотворно низкого предела в 41 градус.