Ограничить использование процессора по температуре

Я управляю проектами распределенных вычислений, которые обычно хотят использовать 100% ЦП. Как ограничить использование ЦП с точки зрения температуры, а не процента использования? Кроме того, какова максимальная безопасная температура, чтобы Intel i5 работал 24/7? (Без ограничения CPU FahCore_a4 заставляет эту машину работать при 82 градусах Цельсия.)

8
задан 3 August 2012 в 08:18

5 ответов

На этой веб-странице есть скрипт bash, который будет пытаться поддерживать ваш процессор ниже указанной температуры. http://seperohacker.blogspot.com/2012/10/linux-keep-your-cpu-cool-with-frequency.html

Вам просто нужно предоставить желаемое максимальная температура, и она будет задавливать ваш процессор (ы), чтобы оставаться ниже этой температуры.

Бесстыдный плагин - я написал и поддерживаю приведенный выше скрипт.

0
ответ дан 3 August 2012 в 08:18

Вот как я решил это, используя bash. Если кто-то придумает лучшего демона (лучше держится ближе к целевой температуре), пожалуйста, опубликуйте его.

#!/bin/bash

while true; do
        val=$(sensors | awk '/Core 0/ {print $3}')
        max="+60.0"
        if [[ "$val" < "$max" ]]
        then
                killall cpulimit
                sleep .1
        else
                cpulimit -e FahCore_a4 -l 99 &
                sleep 1
        fi
        clear
        sensors
done
0
ответ дан 3 August 2012 в 08:18

Так я решил свои проблемы с перегревом, вызванные не определенным процессом, а неспособностью моего ноутбука рассеивать тепло, вызванное высокой нагрузкой на процессор в течение более длительных периодов времени. Основное отличие от решения, предлагаемого самим da code monkey, заключается в том, что я использую масштабирование частоты процессора вместо использования cpulimit в конкретном процессе. Так как у меня установлен и работает Psensor, я использую Psensor. Демон, подобный предложенной обезьяной кода, также должен работать, однако требуются два порога (мин. И макс.). В Psensor (Настройки датчика-> Тревога) я устанавливаю сигнал тревоги для соответствующего датчика, если он становится выше, чем верхний порог (я использую 85), или ниже, чем нижний порог (я использую 80). В Preferences-> Sensors-> Script, выполняемом при возникновении тревоги, я называю мой скрипт heatcontrol.sh следующим образом:

/ALLUSER/heatcontrol.sh powersave ondemand 82

Первый параметр - это действительный scaling_governor, который уменьшает частоту процессора, например энергосбережение. Второй параметр по умолчанию - scaling_governor - ondemand для большинства систем. Третий параметр - это температура между нижним и верхним порогом (точное значение не имеет значения). Psensor добавляет еще два параметра: идентификатор датчика и сообщаемую температуру.

А это мой сценарий heatcontrol.sh:

#!/bin/bash
 # TempNZ is temperature reported by Psensor; strip of trailing °C
TempNZ=$5 
bnum=`expr index "$TempNZ" "°"`
if (( bnum < 2 )); then
    echo "ERROR"
fi
TempNZ=${TempNZ:0:$(($bnum-1))}
STR=$1
# Is this a low threshold alarm?
if [ "$TempNZ" -le "$3" ]; then
    STR=$2
fi
sudo sh -c "echo '$STR' > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
# echo new scaling_governor
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# play sound - audio feedback - optional
paplay /usr/share/sounds/ubuntu/stereo/message-new-instant.ogg

У меня отлично работает (UBUNTU 14.04 LTS).

Будучи новичком в Linux и bash, я использовал ряд ресурсов, в том числе:

https://wiki.archlinux.org/index.php/CPU_frequency_scaling

http://elinux.org/Jetson/Performance#Viewing_the_current_CPU_status

0
ответ дан 3 August 2012 в 08:18

Сам процессор имеет механизм, который отключает его, если он становится слишком горячим. (возможно, нет, если вы отключите прерывания SMI, я не уверен в этом.)

Основным приложением пользовательского пространства является пакет lm-sensors. После установки запустите sensors-detect, чтобы настроить его, если ваши машины одинаковые, вы можете запустить его один раз и использовать полученные результаты везде.

Частота процессора легко контролируется через подсистему драйвера cpufreq. см. https://wiki.archlinux.org/index.php/CPU_Frequency_Scaling

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

0
ответ дан 3 August 2012 в 08:18

"Безопасная" температура

Максимально безопасная температура процессора обычно указывается в его технических характеристиках от производителя. Максимум 100°C довольно распространен. Вы можете оставить температуру на несколько °C ниже этого значения, чтобы иметь некоторый запас (безопасность и, возможно, долговечность компонента).

Кроме того, нагрев ЦП будет передавать часть своего тепла другим, физически близким компонентам вашего компьютера. Вы можете провести некоторые тесты и контролировать их температуру, когда ваш процессор работает на 100%, чтобы проверить, не слишком ли вы приблизитесь к их пределам в долгосрочной перспективе. Лучше проверить это в жаркий день.:)

Регулировка температуры

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

  • Наконец, процессоры Intel Core, например, имеют внутренний механизм ограничения температуры, который можно настроить ниже 100°C, упомянутых выше, выбрав предел в °C.

Дополнительную информацию см. в этом ответе.

0
ответ дан 9 November 2020 в 04:34

Другие вопросы по тегам:

Похожие вопросы: