Ограничение использования ЦП% всех процессов и ядер

Недавно я установил Scientific linux 7 (64-разрядный) на моем ящике Dell, который имеет 2 ядра (т.е. 2 логических процессора). Я не открывал компьютер для чистки вентилятора, кулера и т. Д. Некоторое время, и компьютер отключается при использовании высокого (например, 100%) процессора на обоих (или обоих) ядрах в течение нескольких минут (обычно, когда noveau развращает отображать графику или загружать PDF-документ в firefox или любую длинную команду на терминале, например make ).

Пока я не очищу систему, я хочу ограничить использование процессора% примерно до 75 или 80% на ядро ​​( не на процесс!), Поэтому я не получаю неожиданные отключения. Таким образом, процессы могут по-прежнему использовать преимущества нескольких процессоров, но не нажимать ни один из них выше предела использования% CPU. Любые способы сделать это?

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

    1. Остановка / продолжение сигналов

    Сигналы были с UNIX. Вы отправляете SIGSTOP или SIGTSTP в процесс (разница в том, что первая может привести к сбою процесса, если он должен выполнять работу по очистке, процессы не вынуждены останавливаться на последнем, использовать тот, который подходит вашему процессу), чтобы приостановить его (освобождение CPU и, возможно, понижение температуры). Затем вы отправляете SIGCONT в процесс, чтобы возобновить его, взяв CPU. Этот метод сделает серию «всплесков» на графике процессора и остановит процессор от перегрева, потому что вы не даете ему достаточно времени для этого, приостанавливая процессы.

    Следствием этого метода является то, что эти паузы не являются гладкими , то есть воспроизведение видео и даже просмотр в Интернете тоже не будут гладкими, поэтому вы можете использовать этот метод с командами оболочки (многопроцессорными программами или командами, такими как Google Chrome или make не будет хорошо работать с этим методом). Очевидно, что не рекомендуется приостанавливать / возобновлять системные процессы, такие как systemd.

    Хотя вы можете сделать это вручную, cpulimit – это небольшая небольшая программа, которая использует этот метод (он использует SIGSTOP / SIGCONT). Вопреки описанию, указанный вами процессор, составляет от 0 до 100, даже если у вас несколько ядер. И вы всегда можете приостановить работу в терминале с помощью Ctrl-Z.

    1. cpupower (рекомендуется)

    Он построен в ядре Linux, поэтому большинство дистрибутивов должно предоставить его (получите его здесь, если у вас его нет). Эта утилита командной строки управляет частотой процессора, поэтому она в значительной степени контролирует весь процессор, используя состояния регулятора (например, производительность, энергосбережение и т. Д.), Он также может выполнять другие функции. В отличие от метода паузы / возобновления, процессы намного более сглажены. Вы должны установить максимальную частоту для процессора.

    1. Запустите cpupower frequency-info чтобы просмотреть доступные состояния процессора.
    2. Как root, введите cpupower frequency-set -u <frequency> , начните с самого низкого, который у вас есть, а затем попытайтесь найти самую высокую частоту, которая не перегревается.
    3. (Это необязательно). Если вы хотите, вы можете установить пакет lm_sensors, который позволит вам видеть температуру вашей системы. Затем запустите sensors-detect и ответьте «да» на все вопросы. Наконец, запустите sensors чтобы увидеть текущую и критическую (за которой температура перегревается).

    В этот момент текущая температура должна быть намного ниже. Помните, хотя некоторые высокопроизводительные программы, такие как игры, могут зависать после ввода указанной выше команды, если вы получаете всплывающее окно с этим сообщением, вы должны ждать программы, а не принудительно завершить работу. Обратите внимание, что вы должны набирать эту команду каждый раз, когда система перезагружается (если только вы не сможете запустить ее автоматически). См. Это и это для получения дополнительной информации о cpupower.