В каждой системе Linux одновременно выполняется несколько процессов. Они планируются к выполнению планировщиком ядра, который определяет следующий процесс для выполнения в зависимости от множества факторов. Он использует алгоритм планирования на основе приоритетов для ранжирования и запуска процессов. Процессы с более высоким приоритетом выполняются раньше процессов с более низким приоритетом. В большинстве случаев рекомендуется оставить планирование процессов на усмотрение системы Linux. Но если вам нужно установить приоритет процесса в Linux, это также можно сделать.
Как установить приоритет процесса в Linux
Существует два вида приоритетов, связанных с каждым процессом - один - это значение "приятности", которое варьируется от -20 (самый высокий приоритет) до 19 (самый низкий приоритет), а другой - приоритет реального времени, варьирующийся от 1 до 99. Когда мы хотим установить приоритет процесса, мы изменяем значение "приятности" процесса.
Вы можете проверить значение приоритета процесса, используя ps, top или htop.
1 | ps -eo pid,ppid,ni,comm |
Столбец NI в выводе выше показывает значение важности (приоритет). Вы также можете использовать команды top и htop, которые по умолчанию показывают значения niceness.
Если у вас есть долго выполняющаяся программа с интенсивным использованием процессора, которая, как вы думаете, не будет запущена в ближайшее время, то вы можете использовать команду nice для установки ее приоритета. Вот синтаксис команды nice.
1 | nice -n [niceness-value] [команда args] |
ИЛИ
1 | nice -[niceness-value] [команда args] |
ИЛИ
1 | nice --adjustment=[niceness-value] [команда args] |
Если вы не укажете значение [niceness-value], вышеприведенная команда будет использовать приоритет по умолчанию 10. Обратите внимание, что только пользователь root сможет изменять значения nice для программ. Если вы не используете никакого значения nice по умолчанию, программы получат приоритет по умолчанию 0.
Вот несколько команд для установки приоритета команд с помощью команды nice.
1 | sudo nice -n 5 tar -czf backup.tar.gz /home/ubuntu/data |
ИЛИ
1 | sudo nice --adjustment=5 tar -czf backup.tar.gz /home/ubuntu/data |
Если программа уже запущена, вы можете динамически изменить ее приоритет с помощью команды renice. Первая команда позволяет изменить приоритет по PID (1243) или по имени процесса (apache).
1 | renice -n -12 -p 1243 |
1 | renice -n -2 -u apache |
Заключение
В этой статье мы узнали, как установить приоритет процесса в Linux. Linux довольно хорошо умеет планировать процессы и устанавливать их приоритет. В большинстве случаев вам не нужно менять приоритеты процессов. Но если у вас есть несколько долго выполняющихся или системно интенсивных процессов, то вы можете использовать команды nice или renice. Если вам еще предстоит запустить команды, используйте команду nice, чтобы установить их приоритет перед запуском. Если команды уже запущены, используйте renice для изменения их приоритета.