Есть ли способ ограничить общее потребление ресурсов процессора?


23

Мой ноутбук (HP с чипом i3) перегревается, как сумасшедший, каждый раз, когда я запускаю ресурсоемкий процесс (например, большую компиляцию, извлечение больших тарболлов или ... проигрывание Flash).

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

  1. Я ошибаюсь в своих рассуждениях?
  2. Как я могу перейти к ограничению использования процессора в целом?

Если это поможет, я использую Debian.


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

Вы можете попробовать использовать cgroups. Вот вопрос с похожей проблемой: unix.stackexchange.com/questions/14537/…
Гжегож Вежовецкий,

Ответы:


10

Я не знаю, что ограничение ЦП всей системой - это то, что возможно без большого взлома, но вы можете легко ограничить количество ЦП, используемое одним процессом, используя cpulimit.

Единственный способ, которым я могу думать о том, что вы можете эффективно использовать это, - это написать скрипт-обертку (на самом деле он не может называть его скриптом, он настолько мал) для приложений, которые, как вы знаете, являются источником ресурсов. Скажем, например, вы обнаружите, что Google-Chrome использует много ресурсов процессора, вы можете заменить двоичный файл Google-Chrome на вашем пути на что-то вроде:

#! /bin/bash
cpulimit --limit 70 /usr/bin/google-chrome-bin

Я не проверял это, поэтому возьмите его с крошкой соли. С веб-сайта cpulimit кажется, что вы можете установить правила для ограничений процессоров в разных приложениях. Я не уверен, вам нужно взглянуть.


10

Еще одна альтернатива, которая не была упомянута, - это то cpufrequtils, что я установил и использовал на своем ноутбуке с Debian 6. Он позволяет вам изменить алгоритм ( регулятор в cpufrequtilsтерминологии), который используется ядром для увеличения и уменьшения тактовой частоты в ответ для загрузки - в частности, userspaceрегулятор позволяет вам заблокировать частоту по вашему выбору (конечно, процессор должен быть способен работать на этой скорости).

Например, я использовал его для блокировки Atom на частоте 800 МГц вместо 1,6 ГГц. Это очень просто в использовании.


1
Это должен быть принятый ответ. (Или temp_throttle)
Вайк Хермеч

6

Вы можете ограничить количество ядер вашего процессора в зависимости от температуры, используя скрипт temp_throttle . Он может работать в фоновом режиме, пока вы сосредоточены на более важных вещах. Пример того, как запустить:

sudo ./temp_throttle.sh 80 # Will limit CPU cores when 80C is reached.

* Отказ от ответственности - я автор и сопровождающий temp_throttle *


3

Зайдите в биос и разгоните процессор. - Нет необходимости в хитрости.


А как насчет BIOS, которые не поддерживают разгон?
Даборосс

1
используйте cgroups, но я не видел биоса, который не может изменить настройки частоты когда-либо.
Sirex

Мой (по общему признанию, довольно плохо собранный) ноутбук Alienware M14x R1 не имеет такой настройки, ничего особенного для изменения в BIOS, кроме порядка загрузки и системного времени.
Даборосс


1

Нет необходимости менять регулятор, вам просто нужно изменить значение /sys/devices/system/cpu/*/cpufreq/scaling_max_freqдля каждого ядра процессора.

Например, с этим для цикла:

for f in /sys/devices/system/cpu/*/cpufreq/scaling_max_freq; do
    sudo sh -c "echo $1 > $f" 
done

см. также мой скрипт setcpu .

( оригинальные команды найдены здесь )


-2

Вы можете использовать reniceдля изменения приоритета процесса по идентификатору процесса или группы. Из примеров для renice:

  1. Настройте значение nice так, чтобы идентификаторы процессов 987 и 32 имели меньшее значение nice:

    renice -n 5 -p 987 32

  2. Настройте значение nice так, чтобы идентификаторы групп 324 и 76 имели более высокое значение nice, если у пользователя есть соответствующие привилегии для этого:

    renice -n -4 -g 324 76

  3. Настройте значение nice так, чтобы числовой идентификатор пользователя 8 и пользователь sas имели меньшее значение nice: renice -n 4 -u 8 sas


4
Только дополнительное примечание к ответу: renice, nice или другие подобные инструменты не будут влиять на температуру процессора, проблемный процесс продолжит жрать циклы процессора.
Руфо Эль Магуфо

2
Приятно и Renice не ограничит потребление процессора. Они просто устанавливают приоритеты. Если в это же время ничего не выполняется, процесс все равно будет потреблять всю вычислительную мощность.
Рахму
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.