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)
Ответ на: комментарий от andytux

На четко поставленный вопрос - ответ получил: CoreTemp винды и линя - это разное.
Но проблема не решена.

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

Проблема и упирается в эту - при достижении ЗАДАННОЙ температуры

При «TjMax» = 100
   а). В винде:  при выставлении предела 90 градусов - ПО ИНЕРЦИИ - растет до 95-96 - и только тогда снижается. При напряженных задачах: ставишь предел 80 градусов.
Это позволяет хоть с рваным уровнем: но держать на уровне ~90 градусов == мощность == производительность.  
   б). В Linux:  ~ минуты держится 99 градусов - потом сброс на близкое время - и опять 99 градусов.
Но средняя градусы\мощность\производительность в Linux - ниже чем в винде.
И особенно при жаре: при длительной компиляции - не успевает снизить c 99 - и вырубается.

—– 1). Вопрос: что все таки снижает температуру в Linux? Это сам CPU или прога скрипт ?

и делает то что делает предложенный выше скрипт

Если этот скрипт поможет - что и как делать с этим скриптом:

а). В каком формате его запускать ?

б). Он же должен отслеживать все время как запущен скрипт.

в). Что такое тут wait 60 sec - если частота опроса: то надо проверять каждые 0.5-1 сек - иначе перегрев вырубит.

г). Скорректируйте пожалуйста скрипт до готовности его запуска.

while (true) {
if temp > 90
set cpu-clock = max_Mhz - 1000 Mhz
else
set cpu-clock = max_Mhz
wait 60 sec
}

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

Куда уж нам до великих профи. Многого что выше: у меня нет.

Какой ноут? Какой CPU? Без этого можно бесконечно толочь воду в ступе.

Если это поможет:

sudo lshw 
gentoo-kde                  
    description: Notebook
    product: HP ProBook 4530s (LW843EA#ACB)
    vendor: Hewlett-Packard
    version: A0000402
    serial: CNU2050DSX
    width: 64 bits
    capabilities: smbios-2.6 dmi-2.6 smp vsyscall32
    configuration: boot=normal chassis=notebook family=103C_5336AN sku=LW843EA#ACB uuid=a5fb1308-7fc5-11e0-a137-1488bf0c4049

 sudo lshw  -c processor
  *-cpu                     
       description: CPU
       product: Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz
       vendor: Intel Corp.
       physical id: 0
       bus info: cpu@0
       version: 6.42.7
       slot: CPU 1
       size: 3305MHz
       capacity: 3500MHz
       width: 64 bits
       clock: 100MHz
       capabilities: lm fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx rdtscp x86-64 constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid xsaveopt dtherm ida arat pln pts vnmi md_clear flush_l1d cpufreq
       configuration: cores=4 enabledcores=4 microcode=47 threads=8

cpulimit ==> Для ограничения использования ресурсов центрального процессора.

Опять: задача не постоянно ограничивать - а временно тормозить - не дать перегреться.

Особенно компиляция - это чередование: не интенсивные нагрузки - где желательна максимальная скорость - и интенсивные нагрузки с перегревом - которые надо тормозить.

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

Что такое тут wait 60 sec - если частота опроса: то надо проверять каждые 0.5-1 сек - иначе перегрев вырубит.

Передача тепла – процесс достаточно инерционный, тут такая частота опроса – секунды – излишняя. Каждые полминуты, кмк, будет в самый раз. Датчики измеряют не температуру только ядер процессора, а всей связки «процессор + теплосъëмник» в целом. Температура радиатора же будет меньше, так как он активно отдаëт тепло воздуху окружающей среды. К сожалению, под Linux контроль температуры на разных аппаратных конфигурациях в разных состояниях работоспособности – от «работает хорошо и жрать не просит» до «полностью неработоспособен». У себя я ограничился тем, что задал через cpupower минимально возможную рабочую частоту и выбрал shedutil в качестве планировщика. Частота колеблется в районе минимальной по всем четырëм физическим ядрам, но при увеличении нагрузки она увеличивается. Можно, например, с помощью bbswitch выключать дискретную видеокарту – охлаждение у меня одно на проц с видеочипом, так что это снижает нагрузку на СО.

yars068 ★★★★★
()
Последнее исправление: yars068 (всего исправлений: 1)

Андервольт нужен тут, а не глушение при достижении высокой температуры. У старых ноутбуков это должно работать. Если в BIOS ничего нет, то пробовать intel-undervolt, поглядев потом состояние через intel-undervolt measure и включить в /etc/default/grub опцию c pstate, чтобы было все примерно такого вида, но понятное дело mitigations=auto тоже сойдет. Большинство процессоров работает с огромным добавочным напряжением. И если токи утечек низкие, то это не здорово при повышенном вольтаже и низки токи утечек позволяют сделать меньше напряжения по ядрам.

GRUB_CMDLINE_LINUX_DEFAULT=«splash=silent mitigations=off quiet security=selinux selinux=1 enforcing=1 udev.log_priority=3 skew_tick=1 audit=0 threadirqs preempt=full intel_pstate=enable»

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

i7-2760QM CPU @ 2.40GHz

Уже прекрасно сам умеет снижать, не надо ему мешать своими глупостями. Явно, не с пассивным охлаждением. А вот помочь очень даже можно и нужно.

Дать процессору охлаждение. Вдумчиво и грамотно сделать ревизию системы охлаждения. В те времена уже с завода делали всё весьма бездарно. И глядишь, после этого твоей «хилой системы охлаждения» окажется вполне досттаточно, для работы процессора без снижения частоты.

Хорошенько изучить свой УЕФИ. Вполне возможно, там есть настройки работы охлаждения.

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

Хорошенько изучить свой УЕФИ.

На изучение моего УЕФИ - надо 20 секунд: в 2011 года HP Compact EFI - всего 14 строк - где можно менять галочки.

Охлаждение как на ладони - и висит в воздухе - больше ничего не сделать.

твоей «хилой системы охлаждения» окажется вполне достаточно, для работы процессора без снижения частоты.

    Причина перегрева.
На дешевый б\у ноут рассчитанный на 35 Вт Core-i5-2430M - поставил не разбирая ВЕСЬ ноут - а выломав пластик снизу (см. ссылку выше) - значительно мощнее за $18 45 Вт Core-i7-2760QM - который при нагрузке развивает до 55 Вт. Естественно: при нагрузки выше расчетной - ноут греется.

Советуют: верни штатный 35 Вт CPU - нет. Мощнее CPU - быстрее проглатывает короткие нагрузки\зависания - которые больше раздражают - но не успевают перегреть.

Да: Core-i7-2760QM умеет сам снижать температуру - но начинает снижать при 99 градусах - когда уже поздно - по инерции перегрев и вырубание.

Вот и надо как то заставить снижать например при 90

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

Должно не висеть, а прижиматься к процессору.

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

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

Должно не висеть, а прижиматься к процессору.

Ну это уже из области веселого про блондинок. В ссылке четко видно: все винтиками прижато и паста недавно менялась.

Причина перегрева ясна: не соответствие мощностей нагрева и охлаждения. Все сделано для улучшения охлаждения: открытый воздухозабор - край ноута свисает в воздухе.

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

То есть, прочитать не удосужилась. (не опечатка, но шутка). Не только конкретный пост, всю ту тему.

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

Передача тепла – процесс достаточно инерционный, тут такая частота опроса – секунды – излишняя. Каждые полминуты, кмк, будет в самый раз.

На винде приходилось делать опрос именно 1 сек - больше - перегрев.

Тут надо просто пробовать. Но в современных скриптах не силен - а простой запуск не работает

Gentoo-KDE /home/admin #
while (true) {
if temp > 90
set cpu-clock = max_Mhz - 1000 Mhz
else
set cpu-clock = max_Mhz
wait 60 sec
}
bash: syntax error near unexpected token `{'
bash: syntax error near unexpected token `else'
bash: wait: pid 60 is not a child of this shell
bash: wait: `sec': not a pid or valid job spec
bash: syntax error near unexpected token `}'
bash: syntax error near unexpected token `{'
bash: syntax error near unexpected token `else'
bash: wait: pid 60 is not a child of this shell
bash: wait: `sec': not a pid or valid job spec
bash: syntax error near unexpected token `}'
bash: command substitution: line 1: unexpected EOF while looking for matching `''
bash: bash:: command not found

—– 1). Как правильно запускать этот скрипт?

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

То есть, прочитать не удосужилась. (не опечатка, но шутка). Не только конкретный пост, всю ту тему.

Начал читать как появилась ваша ссылка: но опять вырубили свет. Только что включили - прочитаю.

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

Ревизию сделать. Можно даже термопасту с высокой теплопроводностью дешевую взять типа Frost Mining OMX рублей за 400 тюбик. Нанести тонкий слой, прям реально тонкий и хорошо приладить и прижать систему охлаждения. Одна замена термопасты может скинуть до 20 градусов. Потом андервольт по полной, насколько получится стабильность получить в Cinebench R23.

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

Вот как пример 2 грамма. У меня скинула более 10 градусов на 12900К в сравнении со стоковой. С открытым кристаллом эффект должен быть еще более проявленным.

https://www.ozon.ru/product/termopasta-16vt-mk-dlya-protsessora-noutbuka-videokarty-konsoli-frost-mining-overclock-maximum-x-1649215045/

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

Почитал по вашей ссылке. Интересное образовательное типичное бла бла бла. И нет таких страшных температур: как в вашей ссылке (см. ниже).

anonymous - Ревизию сделать. Можно даже термопасту с высокой теплопроводностью дешевую взять типа Frost Mining OMX рублей за 400 тюбик. Нанести тонкий слой, прям реально тонкий и хорошо приладить и прижать систему охлаждения. Одна замена термопасты может скинуть до 20 градусов. Потом андервольт по полной, насколько получится стабильность получить в Cinebench R23.

Да все штатно с охлаждением. Сейчас в Gentoo-KDE открыты Btop doublecmd и 24 закладки Firefox - но в покое: ~2 гб память и ~1% CPU at ~798 MHz и температуры:

Gentoo-KDE /home/admin # sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +39.0°C  (high = +86.0°C, crit = +100.0°C)
Core 0:        +39.0°C  (high = +86.0°C, crit = +100.0°C)
Core 1:        +38.0°C  (high = +86.0°C, crit = +100.0°C)
Core 2:        +39.0°C  (high = +86.0°C, crit = +100.0°C)
Core 3:        +39.0°C  (high = +86.0°C, crit = +100.0°C)

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

Это при окружении 32 градуса и без долгой нагрузки.

андервольт пока подождет. Долго с -j2 компилировал хром - свет выключили и пропало. Надо настроить компиляцию с j4-8

———- Подскажите кто нибудь: как правильно запустить этот скрипт?

while (true) {
if temp > 90
set cpu-clock = max_Mhz - 1000 Mhz
else
set cpu-clock = max_Mhz
wait 5 sec
}
alex52mail
() автор топика
Последнее исправление: alex52mail (всего исправлений: 1)
Ответ на: комментарий от alex52mail

А ключ от квартиры, где деньги лежат не надо? XD

Ладно, я добрый сегодня

while sleep 5; do
  TEMP=$(sensors | grep Package | awk -F'[+.]' '{print $2}')
  if (( TEMP > 90 )); then
    cpupower frequency-set -g powersave
  else
    cpupower frequency-set -g schedutil
  fi
done
ALiEN175
()
Ответ на: комментарий от alex52mail

Андервольт как раз для этого! Powersave режим тормозит поднятие частот и реакцию на действия. Schedutil по запросу делает -что-то типа баланса. А андервольт позволяет сильно снизить потребление - примерно вдвое. Вот тогда компиляция в 8 потоков будет идти хоть на полной скорости без перегрева. Сюда же хорошую термопасту и должно быть сносно даже на толстом техпроцессе.

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

По порядку.

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

Скрипт работает: но надо немного вылизать.

 while sleep 5; do
 echo ===================
  TEMP=$(sensors | grep Package | awk -F'[+.]' '{print $2}')
  if (( TEMP > 95 )); then
  echo --- Temterature == $TEMP
    cpupower frequency-set -g powersave
  else
  echo --- Temterature == $TEMP
    cpupower frequency-set -g schedutil
  fi
done  

Так компиляция идет с time sudo make -j8 -l8 Несколько раз выскакивало 99 - но не вырубалось.

Большой провал с powersave до 54 градусов.

—– 1). Есть значение\переменная - чтоб было снижение меньше?

Спасибо еще раз.

Хотя время короткой 7m44.476s компиляции не сократилось относительно time sudo make -j4 -l4 - но есть надежда - что и длинная компиляция (что вырубалась несколько раз ночью) - пройдет без вырубания. Проверю запуском на ночь компиляции хрома.


Андервольт как раз для этого! Powersave режим тормозит поднятие частот и реакцию на действия. Schedutil по запросу делает -что-то типа баланса. А андервольт позволяет сильно снизить потребление - примерно вдвое. Вот тогда компиляция в 8 потоков будет идти хоть на полной скорости без перегрева. Сюда же хорошую термопасту и должно быть сносно даже на толстом техпроцессе.

Это будет на проверке следующее. Пока такое:

Gentoo-KDE /tmp/1/qemu-9.2.3 #  intel-undervolt measure
core:             0.464 W
package-0:        3.644 W
uncore:           0.236 W

Package id 0:    41.000°C
Core 0:          40.000°C
Core 1:          40.000°C
Core 2:          40.000°C
Core 3:          40.000°C

Core 0:         800.000 MHz
Core 1:         800.000 MHz
Core 2:         800.000 MHz
Core 3:         800.000 MHz
Core 4:         798.180 MHz
Core 5:         800.000 MHz
Core 6:         800.000 MHz
Core 7:         800.000 MHz

Потом сравню времена компиляции. Для сравнения: делаю тестовую компиляцию того же qemu-9.2.3.tar.xz

Уже сделал для: tmpfs при моих штатной 4+4 гб и не штатной 8+8 гб памяти; для zram и для ssd. Все сделаю: оформлю и выложу.


i-rinat - sudo wrmsr --all 0x1a2 $(( (100-90) << 24))

Спасибо: но не могу найти где взять wrmsr - в пакетах Gentoo нет. Может входит в другие пакеты?

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

Большой провал с powersave до 54 градусов.

Не понял, хорошо или плохо? Ну сами поправьте, что там вам нужно. Вместо говерноров можете крутить максимальную частоту - cpupower frequency-set -f ЗНАЧЕНИЕ

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

Нуу, не в командную строку же скрипт вписывать надо, а в файл, который уже и запускать. Хотя можно и многострочные команды в командной строке писать, но это не всегда удобно. Типичный скрипт на bash выглядит примерно так:

#!/bin/bash

while (true) {
if temp > 90
set cpu-clock = max_Mhz - 1000 Mhz
else
set cpu-clock = max_Mhz
wait 60 sec
}

Пустая строка, содержащая только ‘\n’, в конце скрипта должна быть. Дайте осмысленное имя файлу и запускайте через ./script-name.

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

Провал плохо: пока оклемается - теряется производительность.

Начал читать cpupower --help - вашего совета пока не нашел - сэкономили мне время.

Поиграюсь с cpupower frequency-set -f ЗНАЧЕНИЕ - надо подобрать плавный ход температуры где то 85-90 градусов.

где взять wrmsr - в арче в составе пакета msr-tools

Поиск gentoo wrmsr выкинул это и нашел sys-apps/msr-tools

Спасибо за помощь: направления ясны - будем разбираться.

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

Спасибо. Из файл можно запустить без терминала. Но и так удобно: просто в терминал копи весь скрипт и потом наблюдаю там за изменениями температуры.

Также в терминале: клавишей вверх - возвращается весь много строчный скрипт.

И в скрипте в терминале: проще быстрее править текст - чем в файле.

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

https://github.com/Vladgobelen/NSsensors/blob/main/sensors.c

Я себе сделал вот такой скриптик.

При превышении температуры снижает частоту до заданной. При снижении температуры возвращает на максимум.

Бонусом при отсутствии активности вырубает монитор, что снизило месячное потребление вдвое.

--- Новая итерация ---
Текущая температура: 46.00°C
Температура 46.00°C в пределах нормы. Частота процессора остается на 4.0GHz.

--- Новая итерация ---
Текущая температура: 46.00°C
Температура 46.00°C в пределах нормы. Частота процессора остается на 4.0GHz.

--- Новая итерация ---
Текущая температура: 46.00°C
Температура 46.00°C в пределах нормы. Частота процессора остается на 4.0GHz.

--- Новая итерация ---
Текущая температура: 46.00°C
Температура 46.00°C в пределах нормы. Частота процессора остается на 4.0GHz.

--- Новая итерация ---
Текущая температура: 53.00°C
Температура 53.00°C в пределах нормы. Частота процессора остается на 4.0GHz.

--- Новая итерация ---
Текущая температура: 62.00°C
Температура 62.00°C превышает порог 60°C. Переключение частоты процессора на 800MHz...
Setting cpu: 0
Setting cpu: 1
Setting cpu: 2
Setting cpu: 3
Setting cpu: 4
Setting cpu: 5
Setting cpu: 6
Setting cpu: 7
Текущая частота процессора:
  current CPU frequency: Unable to call hardware
  current CPU frequency: 800 MHz (asserted by call to kernel)

--- Новая итерация ---
Текущая температура: 47.00°C
Температура 47.00°C превышает порог 60°C. Переключение частоты процессора на 4.0GHz...
Setting cpu: 0
Setting cpu: 1
Setting cpu: 2
Setting cpu: 3
Setting cpu: 4
Setting cpu: 5
Setting cpu: 6
Setting cpu: 7
Текущая частота процессора:
  current CPU frequency: Unable to call hardware
  current CPU frequency: 900 MHz (asserted by call to kernel)

--- Новая итерация ---
Текущая температура: 47.00°C
Температура 47.00°C в пределах нормы. Частота процессора остается на 4.0GHz.
LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 3)
Ответ на: комментарий от alex52mail

cpulimit ==> Для ограничения использования ресурсов центрального процессора.

Опять: задача не постоянно ограничивать - а временно тормозить - не дать перегреться.

Нагружается - греется, греется - перегревается. Нет?

И почему постоянно? Только конкретный процесс, который жрёт, в момент, когда выберешь сам.

sr11
()
Ответ на: комментарий от i-rinat

А начиная с каких процов этот MSR работает?

Слишком старый проц, не заработает.

Да нет - и вопреки этому:

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

Ваш: sudo wrmsr --all 0x1a2 $(( (100-85) << 24) - работает на SandyBridge Core_i7-7600QM

intel-undervolt меняет:

admin@Gentoo-KDE ~ $ sudo intel-undervolt read
CPU (0): Input/output error
GPU (1): Input/output error
CPU Cache (2): Input/output error
System Agent (3): Input/output error
Analog I/O (4): Input/output error
 
Warning: MSR and memory values are not equal
Warning: package power limit is locked
Short term package power: 56 W, 0.001 s, enabled
Long term package power: 45 W, 28.000 s, enabled
 
Critical offset: -1°C 

Но похоже правду пишут: linux undervolting for Haswell and newer Intel CPUs

На SandyBridge Core_i7-7600QM - intel-undervolt для CPU и GPU - не работает. Срабатывают: term package power и offset не больше 15.

admin@Gentoo-KDE ~ $  sudo intel-undervolt apply
CPU (0): Input/output error
GPU (1): Input/output error
CPU Cache (2): Input/output error
System Agent (3): Input/output error
Analog I/O (4): Input/output error
Warning: package power limit is locked
Short term package power: 45 W, 2.000 s, enabled
Long term package power: 35 W, 32.000 s, enabled
Critical offset: -15°C 

—– 1). Можно ли: что изменяет intel-undervolt - изменить прямым путем как выше TjMax ?

—– 2). Как сделать undervolt и TMax для дискретной карты AMD Seymour Radeon HD 6400M/7400M Series

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

Андервольт нужен тут, а не глушение при достижении высокой температуры. У старых ноутбуков это должно работать.

Как раз у старых ноутов - это не работает. А в первом: вы правы.

Спасибо ALiEN175 за скрипт торможения. Он позволил разобраться с этими:

  cpupower frequency-set -g schedutill
  cpupower frequency-set -f 3.50GHz    #  в покое - при постоянных: 3.50GHz ~ CPU греется до ~44;  а при 800 MHz ~ греется до ~38
---
Gentoo-KDE /home/admin # cpupower frequency-info
  available cpufreq governors:   conservative   ondemand   userspace   powersave   performance   schedutil
  current policy:  frequency should be within 800 MHz and 3.50 GHz.
  The governor  "schedutil"  - may decide which speed to use within this range.

Но для практики: торможение не годится.

Вопрос темы: наконец мне прояснился. Температуру - при которой проц сам тормозиться: МОЖНО снизить на 15 градусов.

Но на SandyBridge Core_i7-7600QM - intel-undervolt - не работает: и для CPU и для GPU и для term package power

В дополнении к посту выше: при intel-undervolt apply - меняются term package power и offset Но при следующим read - измененным остается только offset

Пока: offset можно изменить как выше так и sudo wrmsr --all 0x1a2 $(( (100-85) << 24) - работает на SandyBridge Core_i7-7600QM

Отработан оптимальный режим компиляции на ноуте: с процем - мощнее охлаждения и 8 гб памяти.

Компиляция Chromium: тупо проверяет - нет - отказ.

 * Checking for at least 9 GiB RAM ...  
 * Checking for at least 19 GiB disk space at  /var/tmp/portage/

Поэтому: и при 8 гб памяти - монтируем в памяти 32 гб /var/tmp/ и подключаем 24 гб ZRAM swap

   mount  -m  -o rw,defaults,noatime,mode=1777,size=32G -t tmpfs  /var/tmp/portage
   mount  -o remount,size=8G  -t tmpfs  /tmp 

Саму компиляцию делаем: при постоянной максимальной частоте с торможением CPU при 85 градусах.

  sudo  echo 'MAKEOPTS="-j8 -l8"' >> /etc/portage/make.conf
  sudo  wrmsr --all 0x1a2 $(( (100-85) << 24)
  cpupower frequency-set -f 3.50GHz 
  time  sudo  USE="-X -cups l10n_ru optimize-thinlto optimize-webui thinlto " emerge -av www-client/ungoogled-chromium
  cpupower frequency-set -g schedutill   # возврат к динамической частоте.

При этом: остается мощность проца

Short term package power: 56 W, 0.001 s, enabled   # не понятно: почему такое малое время - можно секунды - если найду как это задать.
Long term package power:  45 W, 28.000 s, enabled

В разделенном терминала отслеживаю:

   while sleep 3 ; do  sensors | grep +120 ; done   # отслеживать нагрев видео карты  AMD Radeon HD 6400M
   while sleep 3 ; do TEMP=$(sensors | grep Package | awk -F'[+.]' '{print $2}') ; if (( TEMP > 90 )) ; then echo --- CPU overheated to == $TEMP ; fi ; done   # отслеживать нагрев CPU   В этом режиме: мощность 25-35 Вт - соответствует охлаждению. Нагрев CPU - не превышал 91 градус. 
   while sleep 3 ; do echo "scale=2; $(sudo rdmsr 0x198 -u --bitfield 47:32)/8192" | bc ; done  # отслеживать CPU Core Voltage == меняется от 0.78 в покое до 1.1-1.2 при нагрузке.
   sudo intel-undervolt measure   # отслеживать мощность, нагрев и частоты CPU    

Такие меры: позволили на 45 Вт CPU (при охлаждении 35 Вт) - компилировать без перегрева на всех 8 потоках проца - и в 2 раза быстрее - чем компилировал ранее.

Но на старом ноуте: intel-undervolt - не работает. Как сделать undervolt - это следующий вопрос.

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

wrmsr <…> работает на SandyBridge Core_i7-7600QM

На SandyBridge Core_i7-7600QM - intel-undervolt для CPU и GPU - не работает

Взаимно исключающие утверждения.
intel-undervolt, как и другой аналогичный софт, использует тот же MSR для задания лимита температуры.

Ну и 7600 — явно не Sandy Bridge. Те были 2xxx. А 7xxx это Kaby Lake. Опечатка, наверное.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Спасибо. Раз напечатал - потом копировал и в башке все крутилось: что то не так.

Конечно опечатка. С Core_i7-7600QM - таких проблем не было бы.

У меня: Core_i7-2760QM - и на нем НЕ работает intel-undervolt - для CPU и GPU и не изменяет term package power

intel-undervolt, как и другой аналогичный софт, использует тот же MSR для задания лимита температуры.

Поэтому у меня: intel-undervolt - меняет только offset

Может здесь подскажите: а то собрался создавать тему - «Как и где задать undervolt - когда нет в BIOS и не срабатывает linux-undervolt»

Любой софт - считывает откуда то. У меня intel-undervolt не может считать - но данные где то есть.

sudo dmidecode -t processor | grep Voltage # ==> Voltage: 1.2 V ~ это данные «паспорта»

Для SandyBridge нашел только - и пока сделал только отслеживание:

while sleep 3 ; do echo "scale=2; $(sudo rdmsr 0x198 -u --bitfield 47:32)/8192" | bc ; done  # CPU Core Voltage ==> меняется от 0.72 в покое до 1.1-1.2 при нагрузке.

—– 1). Где и как менять данные ниже: напрямую без софта ?

—– 2). Что значат предупреждения Warning - как их исправить ?

admin@Gentoo-KDE ~ $ sudo intel-undervolt read
CPU (0): Input/output error
GPU (1): Input/output error
CPU Cache (2): Input/output error
System Agent (3): Input/output error
Analog I/O (4): Input/output error
 
Warning: MSR and memory values are not equal
Warning: package power limit is locked
Short term package power: 56 W, 0.001 s, enabled
Long term package power: 45 W, 28.000 s, enabled

Critical offset: -1°C  #  этот меняется
alex52mail
() автор топика
Ответ на: комментарий от anonymous

Андервольт нужен тут, а не глушение при достижении высокой температуры.

ТС специально поставил себе более мощный и горячий процессор вместо исходного, чтобы компиляло быстрее. Поставить более мощное охлаждение он забыл.

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

Конечно опечатка. С Core_i7-7600QM - таких проблем не было бы.

Сильно сомневаюсь в существовании Core i7 7600qm.

Как и где задать undervolt - когда нет в BIOS и не срабатывает linux-undervolt

Общий ответ: никак и нигде. Разве что получится найти какие-то недокументированные ручки-крутилки у чипсета или что там заведует установкой напряжений. Шунт какой-нибудь можно напаять ещё, наверное.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

VRM заведует в паре с процессором, у меня VRM даже на smbus напрямую виден, что редко бывает. Правда утилиты для управления VRM напрямую не публичны, и не особо нужны, на гоночных платах и процессорах это всё управляется через msr процессора/настройки биоса, бывает что скрытые. Ну и сейчас из-за секурити макак взяли моду по умолчанию доступ к этим msr из системы блокировать.

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

Было же: «Никогда не говори никогда.»

И есть Core_i7-7600U - который слабее моего i7-2760QM

Сам Russian-American - застявший в Файной. Вокруг постоянно бухает: и часто сбитые своими же: падают на людей.

А в штатах привык: самое сложное - найти человека - который знает твою проблему.

Большинство янки с гонором превосходства: но от души помогают - если это не больше их карманных денег.
В школах, университетах: их учат решать практические проблемы - быстро, качественно.
Но: учат решать - только ОДНУ проблему. Только так: можно засадить людей за конвейер - откуда самые дешевые товары.

Типичная сцена:

Захожу в местное отделение банка - и спрашиваю:
Дайте мне SWIFT Code вашего банка.
Отвечают с гонором - как глупому русскому: у вас же есть чековая книжка - там на каждом чеке есть код.
Прошу: прочитайте пожалуйста что написано в чеке ==> Route Code - а что прошу у вас ?
Тут гонор пропадает - но еще УВЕРЕННО отвечает: *"В нашем банке нет SWIFT Code"*
Как нет - вы большой банк. Не знаю: идите к менеджеру.
Захожу в его каморку: та же сцена - и кончается - звоните в банк на 800...
Местное отделение банка: и их не учили международным операциям.

А звонить 800... - уже сами тут прочувствовали - плохое - быстро тут приживается.
В штатах: деловые просто набирают номер и надевают гарнитуру - и продолжают свои дела - пока не ответит человек.

Вечером:  меня минут 40 перекидывали от одного к другому - у них не было SWIFT Code
Кто отвечает на 800... - их учат отвечать на 95%  ТИПИЧНЫХ  вопросов.  Чуть в сторону - побег.
Пока одна сказала: да есть - диктую. И диктует .....U5 - говорю должен быть код страны US
Ответ: у меня написано U5 - звоните в рабочее время специалистам.
Днем:  опять около часа перекидывание: и наконец ОДИН сказал: да должен быть US

Так и с моим undervolt - где то есть - кто знает. Это же читает у меня CPU Core Voltage.

   while sleep 3 ; do echo "scale=2; $(sudo rdmsr 0x198 -u --bitfield 47:32)/8192" | bc ; done  # CPU Core Voltage ==> меняется от 0.72 в покое и до ~1.1.  Максимально было 1.24 при стресс нагрузке.

Пишут: менять надо в паре. Вот и надо искать как задавать у меня undervolt

Но undervolt сейчас - более любопытство: как сделать - и что будет.

У меня VCore меняется: от 0.72 в покое и до ~1.1. Максимально было 1.24 при стресс нагрузке.

—– 1). У кого undervolt - как у вас меняется VCore ?

Делал поиск в настройках ядра: и undervolt и VCore и 1.2 - но не нашел.

—– 2). А можно ли задать undervolt в настройках ядра ?

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

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

Qui-Gon ★★★★★
()
Ответ на: комментарий от Qui-Gon

Это не проблема.

/etc/local.d/ <== This directory should contain programs or scripts which are to be run when the local service is started or stopped.

В OpenRC из папки: /etc/local.d/ - при загрузки выполняются все *.start файлы; и при выключении выполняются все *.stop файлы.

#!/bin/bash

#####            This is:    /etc/local.d/zram.start

wrmsr --all 0x1a2 $(( (100-85) << 24))
cpupower frequency-set -g schedutill

modprobe zram
algo=zstd
###  В теории:  zram сжимает от ~1.8 раз lzo - и до ~3 раз zstd
###  Сжатие падает:  zstd  lz4  lzo   Время сжатия растет:  lzo  zstd  lz4
SIZE=1024
SIZE=$SIZE*24
echo $(($SIZE*1024*1024)) > /sys/block/zram0/disksize
#                           /sys/devices/virtual/block/zram0/   zram1
 mkswap /dev/zram0
 swapon /dev/zram0 -p 10

# mkfs.ext4 /dev/zram0
# mount -m  /dev/zram0  /var/tmp

—– 1). А вот как offset и undervolt - вставить в ядро - пока не нашел.

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

И есть Core_i7-7600U

Буквы в идентификаторе модели — важная часть идентификатора. Если имелся в виду i7-7600U, то ладно. Только это всё равно не Sandy Bridge.

Было же: «Никогда не говори никогда.»

Твой вопрос из той самой категории, где либо человек понимает тонкости в достаточной мере, чтобы самостоятельно найти ответ, либо в достаточной мере не понимает, и тогда для него любой ответ эквивалентен упрощённому «это невозможно».

Это же читает у меня CPU Core Voltage.

Вот именно, читает.

Если я замеряю напряжение в розетке вольтметром и вижу там 230 В, значит ли это, что какие-то ручки на вольтметре позволяют изменить напряжение в розетке?

i-rinat ★★★★★
()
Ответ на: комментарий от Qui-Gon

Похоже, сильно от модели зависит. У меня на текущем ноуте напряжения сбрасываются после цикла suspend-resume, но не сбрасываются при отключении и подключении блока питания. На одном из старых серваков на Xeon E3-1275 v5 (Skylake) установленные напряжения переживали нажатие Reset. Чтобы сбросить, понадобилось передёрнуть питание.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

ну да - это уже тонкости биоса. С серваками то понятно - там «батарейное» питание в виде UPS может в теории быть но это уже скорее аварийная ситуация чем норма.

А вот в современных ноутах особенно на интел - почти во всех производительность от батареи сильно проигрывает производительности от сети. А это значит только одно - что при подключении-отключении питания биос перезаливает лимиты (напряжения на современных процах от тайгерлейка и выше гвоздями прибиты). Поэтому пока я не повесил себе скрит в acpid на передергивание питания все мои local.d слетали при выдергивании шнура питания и переносе ноута на другой стол.

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

сейчас не локнутых только специальная орогущая игровая серия. И то я не уверен что там можно делать понижение напряжения. Точно можно повышать и разгонять - но вот с понижением интел вроде как покончил бесповоротно. Вроде как на материнках гемерских можно менять напряжение которое приходит на процессор в качестве базового, но вот с самим процессором стало грустно.

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

амд вообще андервольтить нельзя эти - собаки сами внутри себя управляют связью вольтажа с частотой. То есть можешь сандервольтить - но он при этом сам себя и даунклокнет пропорционально. Это у интела вольты отдельно частоты отдельно…

Qui-Gon ★★★★★
()
Ответ на: комментарий от Qui-Gon

амд вообще андервольтить нельзя эти - собаки сами внутри себя управляют связью вольтажа с частотой. То есть можешь сандервольтить - но он при этом сам себя и даунклокнет пропорционально.

Я не даунвольтнутый анон, просто мимо проходил. Нет, там вроде не так просто. Частоты могут и вырасти при снижении напряжения. А стабильность может и исчезнуть. Так что я не очень понимаю, в чём профит Curve Optimizer, если один фиг можно получить нестабильную систему.

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

ну не все кристаллы одинаковые. Понятно что они на заводе отсортированы - хорошие идут либо в U серию для ультрабуков либо в гемерскую (не помню как она маркируется) а говенные которые третий сорт но еще не брак - идут в народную дешманскую H. Но дале в этих кучках есть чипы получше и похуже, а заводские настройки сделаны по самому говенному кристаллу из кучи + небольшой добавок вольтажа чтобы даже этот кусок говна работал стабильно. Но пока была вохможность делать андервольт - путем проб и ошибок подбиралось напряжение на конкретно твой кристалл. Теперь так сделать нельзя - на интеле по крайней мере.

Qui-Gon ★★★★★
()
Ответ на: комментарий от Qui-Gon

можно, если слишком сильно андервольтнешь программы валится начинают. и там не просто частота, а пропуск тактов. и у интела уже тоже это есть

anonymous
()