LINUX.ORG.RU

Linux - как заставить тормозить CPU при заданной температуре

 , ,


0

1

В ноуте стоит CPU мощнее охлаждения.

В Coretemp64.exe Windows - ЗАДАЕТСЯ температура - при которой начинается торможение CPU. Обычно выставляется на 10-15 градусов - ниже Макс.температура CPU - тогда ноут работает без перегрева и больших рывком.

Coretemp Linux - начинает торможение при достижении 99 при 100 Макс.температура CPU. Но особенно в жару: не успевает понизить - и ноут вырубается.

Не могу найти:

1). Как для Linux - задать температуру торможения CPU ?

# sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +48.0°C  (high = +86.0°C, crit = +100.0°C)
Core 0:        +48.0°C  (high = +86.0°C, crit = +100.0°C)
Core 1:        +44.0°C  (high = +86.0°C, crit = +100.0°C)
Core 2:        +42.0°C  (high = +86.0°C, crit = +100.0°C)
Core 3:        +45.0°C  (high = +86.0°C, crit = +100.0°C)

hp-isa-0000
Adapter: ISA adapter
pwm1:             N/A

radeon-pci-0100
Adapter: PCI adapter
temp1:        +38.0°C  (crit = +120.0°C, hyst = +90.0°C)
freq1:        100 MHz 

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +47.0°C  
temp2:        +41.0°C  
temp3:        +37.0°C  
temp4:        +46.0°C  
temp5:        +20.0°C  
temp6:         +0.0°C

Перемещено hobbit из general



Последнее исправление: alex52mail (всего исправлений: 2)
Ответ на: комментарий от anonymous

На самом деле ограничитель по температуре там в меню overheat protection, оффсет там похоже для корректировки показаний, просто название совпало. В проце есть регистр tjmax offset если чё.

anonymous
()
Ответ на: комментарий от anonymous

У меня такого пути нет и не находится cc_offset_degree_celsius

Есть только: /sys/bus/pci/devices/0000:04:00.0

intel tcc cooling driver - его ставить надо ?

В Gentoo не нашел такого.

Даа? А ничего, что это утилита МОНИТОРИНГА? Частотой процессора она не управляет, разве что моргать может при превышении заданных параметров.

Вы читать не умеете. Написано же: В Coretemp64.exe Windows - выставляешь на 10 градусов ниже предела - и проц тормозится.

alex52mail
() автор топика
Ответ на: комментарий от anonymous

Ананимусы такие ананимусы))

О нееет, у меня на проце 1040 градусов! Пичаль-беда.
И что эта прожка делает? Да абсолютно ничего. Сообщение мне вывела) Ну ОКЭЙ.

А в оверхитинге там просто параметры поморгать/запустить внешнюю прогу/увести машину в шатдаун/сон.

https://ibb.co/wF37bz6x

ALiEN175
()

В ноуте стоит CPU мощнее охлаждения.

Ну если уж так приспичило, поставьте cpupower и ограничьте частоту проца. Все эти ананимусные припарки типа «поменять offset Tjmax в /sys» - результата не дадут. С тем же успехом можете напрямую писать желаемую температуру проца в /sys/class/hwmon…

ALiEN175
()
Ответ на: комментарий от anonymous

Что не так: ядро компилировалось на этом железе:

cat /boot/config-6.12.34-gentoo-dist | grep TCC_COOLING
CONFIG_INTEL_TCC_COOLING=m

/usr/lib/modules/6.12.34-gentoo-dist/kernel/drivers/thermal/intel/intel_tcc_cooling.ko.xz

а модуль не вставляется

sudo modprobe intel_tcc_cooling
modprobe: ERROR: could not insert 'intel_tcc_cooling': No such device

у если уж так приспичило, поставьте cpupower и ограничьте частоту проца. Частоту и не желательно ограничивать. Задачи которые идут с 100% CPU но не полной частотой - греют сильнее - чем задачи при полной частоте - но ниже % CPU.

Задача просто тормозить при достижении определенной температуры - как делает Coretemp64.exe Windows

alex52mail
() автор топика
Ответ на: комментарий от anonymous

Даёт результат, если есть утилиты типа tlp/thermald/cpupower, которые мониторят параметры в /sys и регулируют частоту процессора в зависимости от полученных данных. Без них - можете в /sys писать любую ерунду, это абсолютно ни на что не повлияет.

ALiEN175
()
Ответ на: комментарий от vaka
while (true) {
if temp > 100
set cpu-clock = max_Mhz - 1000 Mhz
else if temp > 80
set cpu-clock = max_Mhz - 500 Mhz
else
set cpu-clock = max_Mhz
wait 60 sec
}

Когда это применять ? Если temp > 100 - то уже вырубится.

И все же: надо тормозить и не уменьшать частоту.

alex52mail
() автор топика
Ответ на: комментарий от ALiEN175

Работает если его закрыть, в фоне он ничего запущенным не оставляет, он в регистр пишет, если проц поддерживает. Можно вообще без него в этот регистр записать оффсет и будет работать, в биосе настройка такая же есть, но на более старых платах она скрытая.

anonymous
()
Ответ на: комментарий от anonymous

он в регистр пишет

В какой-такой регистр? Еще раз повторяю - если ты запишешь в /sys/class/hwmonX/temp1_input «10000» - у процессора не будет реальной температуры 10 градусов.

записать оффсет

Это просто подстройка отображения. От того, что ты его куда-то запишешь - ни реальный Tjmax проца не изменится, и не изменится его реальная температура,

ALiEN175
()
Ответ на: комментарий от ALiEN175

Забудь уже про вантузный коретемп, про другую фичу разговор.

В какой-такой регистр?

MSR_IA32_TEMPERATURE_TARGET

если ты запишешь в /sys/class/hwmonX/temp1_input

Там другой файл, алё. Твой файл RO по-моему, кстати.

Нет, это не подстройка отображения.

anonymous
()
Ответ на: комментарий от anonymous

MSR_IA32_TEMPERATURE_TARGET

Совсем дурачок?

Регистр MSR_IA32_TEMPERATURE_TARGET (адрес 0x1A2) в процессорах Intel — это Model-Specific Register (MSR), который содержит значение температурного лимита (обычно называемого «TjMax» — максимальная температура кристалла). Он только для чтения, и не может быть изменён программно пользователем или операционной системой.

ALiEN175
()
Ответ на: комментарий от anonymous

Там другой файл, алё.

Ды нет.

$: cat /sys/class/hwmon/hwmon1/temp1_input
47000

файл RO по-моему, кстати.

Угу. Просто напомнило какой-то тред, возможно и на лоре. Где чел туда пытался что-то писать, и сетовал что не может поменять температуру проца XD

ALiEN175
()
Последнее исправление: ALiEN175 (всего исправлений: 1)
Ответ на: комментарий от ALiEN175

Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 4: Model-Specific Registers https://web.archive.org/web/20250730132123/https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html

Register Address: 1A2H, 418 MSR_TEMPERATURE_TARGET
Temperature Target Package
15:0 Reserved.
23:16 Temperature Target (R)
The default thermal throttling or PROCHOT# activation temperature in
degrees C. The effective temperature for thermal throttling or PROCHOT#
activation is “Temperature Target” + “Target Offset”.
29:24 Target Offset (R/W)
Specifies an offset in degrees C to adjust the throttling and PROCHOT#
activation temperature from the default target specified in
TEMPERATURE_TARGET (bits 23:16).
anonymous
()
Ответ на: комментарий от ALiEN175

Задача просто тормозить при достижении определенной температуры - как делает Coretemp64.exe Windows

Она ничего не делает.

Как не делает. Тут какое то не согласование.

У меня вопрос возник: если Coretemp64.exe Windows начинает тормозить при температуре - которую выставишь сам. То подумалось: может Coretemp Linux тех же авторов - и тоже можно где то задавать температуру торможения.

Но и здесь подтверждается - что давал поиск: Coretemp Linux - только датчики чтения без обратной связи.

Похоже все остается как было.

Сознательно менялся проц с мощностью - более охлаждения ноута. Такой проц: быстрее проглатывает короткие нагрузки\зависания - которые не успевают перегреть. А постоянное снижение частоты - это противоположное.

Ну а длительные нагрузки: в винде удавалось тормозить Coretemp64.exe. А в лине: торможение начитается при достижении 99 с максимумом 100 - и часто не успевает. Это при длительной компиляции.

Как и планировалось: длительная компиляция или при холоде или длительная не на всех потоках проца. В жару -j2 -l2 а при морозе -j8 -l8

alex52mail
() автор топика
Ответ на: комментарий от ALiEN175

Что за модель? В интеловской доке указано что на бродвеле есть, а в драйвере айдишников бродвела нет мкек, начинают со skylake. Можно попробовать через wrmsr из msr-tools, может в драйвере ошиблись, а может в тех процах был какой-то косяк…

anonymous
()
Ответ на: комментарий от ALiEN175

Автор упоминает: так как другого не знает.

Если есть возможность понизить обычно называемого «TjMax» - было бы не плохо. Но только без постоянного снижения частоты\загрузки.

Ладно. Пока поставлю на ночь компиляцию: time sudo USE="-X -cups l10n_ru optimize-thinlto optimize-webui thinlto " emerge -av www-client/ungoogled-chromium

C -j2 -l2 - за несколько часов сделает.

alex52mail
() автор топика
Ответ на: комментарий от alex52mail

Так автоматика проца и будет снижать частоту при достижении заданной температуры. По сути виндовый коретемп на твоей модели проца скорее всего и делает то что делает предложенный выше скрипт

cobold ★★★★★
()
Ответ на: комментарий от ALiEN175

Ну автор же упоминает только cоretemp

Автор загадочным образом установил связь между виндовой утилитой и модулем ядра по названию. Даже не знаю, о чём тут говорить, учитывая, что подробности о железе он вроде ее привёл (тему особо не читал, мимо проходил).

anonymous
()