Чи є спосіб обмежити загальне споживання процесора?


23

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

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

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

Якщо це допомагає, я запускаю Debian.


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

Ви можете спробувати використовувати групи. Ось анкета з подібною проблемою: unix.stackexchange.com/questions/14537/…
Grzegorz Wierzowiecki

Відповіді:


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

Ви можете обмежити свої ядра CPU автоматично, виходячи з температури, використовуючи сценарій temp_throttle . Він може працювати у фоновому режимі, поки ви зосереджуєтесь на більш важливих речах. Приклад того, як запустити:

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

* Відмова від відповідальності - я автор та підтримка temp_throttle *


3

Зайдіть в біос і розірвіть процесор. - Не треба розуму.


А як щодо BIOS, які не підтримують розблокування?
даборосс

1
використовувати cgroups, але tbh я не бачив біос, який не може змінити налаштування частоти ніколи.
Сірекс

Мій (правда, досить погано побудований) ноутбук alienware m14x r1 не має таких налаштувань, нічого не доступного для зміни в біографії, крім порядку завантаження та системного часу.
даборосс


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. Відрегулюйте приємне значення, щоб ідентифікатори 987 та 32 процесу мали нижчу величину:

    renice -n 5 -p 987 32

  2. Відрегулюйте приємне значення, щоб ідентифікатори груп 324 та 76 мали більш високе значення, якщо користувач має для цього відповідні привілеї:

    renice -n -4 -g 324 76

  3. Відрегулюйте приємне значення, щоб числовий ідентифікатор користувача 8 та користувацький САС мали нижче значення приємного: renice -n 4 -u 8 sas


4
Лише додаткова примітка до відповіді: renice, nice чи інші подібні інструменти не впливатимуть на температуру процесора, проблемний процес буде продовжувати їсти цикли процесора.
Руфо Ель Магуфо

2
Ніцца та renice не обмежать споживання процесора. Вони просто встановлюють пріоритети. Якщо при цьому нічого іншого не працює, процес все одно буде споживати всю потужність обробки.
rahmu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.