Независимо от того, насколько быстра ваша машина с Linux, всегда найдутся задачи, которые потребляют много процессорного времени. Все, от кодирования видео до запуска математических моделей, может привести к загрузке процессора на 100%. Это нормально, если машина больше ничего не делает. Но если это ваш основной рабочий стол или он используется в качестве сервера, то выполнение задачи, которая максимально нагружает ваш процессор, сделает компьютер медленным и трудным в использовании. Прелесть многозадачной операционной системы в том, что машина не зависает, поскольку всегда распределяет время процессора для других задач, а такие вещи, как рабочий стол, по-прежнему будут работать, но гораздо медленнее. Планировщик не может узнать, хотите ли вы, чтобы задача, интенсивно использующая ЦП, выполнялась с более низким приоритетом или ограничивала время ее ЦП. Однако есть некоторые инструменты, которые можно использовать для контроля использования ЦП процессом для этих ресурсоемких задач.
Чтобы эмулировать задачу, требующую интенсивного использования ЦП, мы можем использовать инструмент под названием matho-prime
, который генерирует список простых чисел. Если вы попросите его сгенерировать достаточно большой список, он будет максимально использовать процессор во время работы. Чтобы установить matho-prime
на Ubuntu или Raspberry Pi, используйте:
sudo apt-get install mathomatic-primes
Давайте просто запустим задачу и посмотрим загрузку процессора:
matho-primes 0 9999999999 > p.txt &
Это предписывает matho-primes
сгенерировать список простых чисел от нуля до девяти миллиардов девятьсот девяносто девять миллионов девятьсот девяносто девять тысяч девятьсот девяносто девять! Вывод перенаправляется в файл p.txt
. Амперсанд в конце указывает оболочке запустить программу в фоновом режиме, что означает, что вы вернетесь в командную строку сразу после запуска задачи.
Теперь запустите команду top
и обратите внимание на объем процессора, используемого генератором простых чисел.
Теперь давайте завершим эту задачу и посмотрим, как мы можем запустить ее с более низким приоритетом. Выйдите из top
, нажав q
, затем введите fg
, чтобы перевести matho-primes
на передний план, а затем нажмите «Ctrl + C».», чтобы принудительно завершить работу программы.
Теперь снова запустите программу, но в начале команды добавьте слово nice
:
nice matho-primes 0 9999999999 > p.txt &
nice
— это инструмент, который сообщает Linux запланировать эту задачу с более низким приоритетом. Добротность варьируется от -20 (наиболее благоприятное планирование) до 19 (наименее благоприятное). По умолчанию nice
запланирует задачу с точностью 10. По умолчанию обычные задачи запускаются с нулевой точностью. Это означает, что задача с точностью 10 будет рассматриваться как имеющая более низкий приоритет и ей будут реже выделяться ресурсы ЦП.
Теперь мы можем запустить второй из этих генераторов простых чисел, чтобы эмулировать другие задачи, которые вы хотите выполнять на своем компьютере (например, просмотр веб-страниц или написание документа). Это будет нормально, поскольку использование рабочего стола должно быть более приоритетным, чем запуск генератора простых чисел.
matho-primes 0 9999999999 > p2.txt &
Обратите внимание, что вывод из этого файла перенаправляется на p2.txt
. Вывод команды top
будет выглядеть примерно так:
Как видите, процесс с более высоким качеством получает меньше процессорного времени. Это означает, что если вы запустите задачу с интенсивным использованием процессора с помощью nice
, это не заставит вашу машину работать вяло или медленно реагировать.
ограничение процессора
Есть еще одна команда под названием «cpulimit», которая вместо изменения приоритета планирования временно приостанавливает процесс, чтобы гарантировать, что он не превысит желаемое использование ЦП.
Чтобы установить его, введите:
sudo apt-get install cpulimit
Теперь снова запустите генератор простых чисел, интенсивно использующий процессор, и запишите его номер PID с помощью этой команды:
ps | grep matho-prime
Первый столбец вывода — это PID. Теперь ограничьте использование ЦП этим процессом следующим образом:
sudo cpulimit -b -l 50 -p 16299
Где 16299 — PID процесса matho-primes
. Взгляд с top
покажет что-то вроде этого:
Дальше
К nice
есть сопутствующая команда под названием renice
, которая меняет качество существующего процесса. Попытка использовать top
или ps
с grep
, чтобы получить PID процесса, и использовать renice +19 16299
, чтобы установить приоритет минимально возможный (где 16299 — PID процесса).
Не стесняйтесь участвовать в обсуждении в комментариях ниже.