Как задать или изменить приоритет процесса в Linux?
- AJIekceu4
- 17.12.2018
- 39 811
- 5
- 23.11.2020
- 65
- 64
- 1
В некоторых ситуациях может возникнуть необходимость запускать скрипт/программу не со стандартным приоритетом, а с более высоким или низким, либо повысить или понизить приоритет у запущенного ранее процесса. В данной статье мы рассмотрим несколько способов, как можно это с делать.
Что такое приоритет процесса?
Приоритет процесса определяет, как часто именно этот процесс, по сравнению с другими запущенными процессами, стоящими в очереди на выполнение, будет исполняться процессором. В ОС Linux значение приоритета процесса варьируется в диапазоне значений от -20 до 19 (т.е. получается 40 возможных значений: -20, -19, -18 ... 0, 1, 2 ... 19) и называется niceness (сокращенно NI).
Чем меньше это значение, тем выше приоритет будет у такого процесса. Например, если у нас есть один процесс, работающий с приоритетом 10, а другой процесс работающий с приоритетом 15, то в первую очередь будет выполняться процесс приоритетом 10, а уже после него, тот, где приоритет 15. А в ситуации, когда есть 2 процесса и у одного из них приоритет будет равен -20, а у другого равен 10, то в первую очередь процессор будет обрабатывать тот процесс, у которого приоритет равен -20, а уже после тот, у которого приоритет равен 10.
Как узнать приоритет процесса?
С помощью команды top (все запущенные процессы)
Посмотреть приоритет процесса можно с помощью команды top
С помощью команды ps (конкретный процесс(ы) по его имени)
ps -o pid,comm,nice -C mysqld
PID COMMAND NI
706 mysqld 0
С помощью команды ps (конкретный процесс по его PID)
ps -o pid,comm,nice 706
PID COMMAND NI
706 mysqld 0
Задание приоритета при запуске процесса
Для того, чтобы задать приоритет при старте нового процесса, необходимо воспользоваться командой nice
nice -n [значение приоритета] [команда]
Запустить утилиту top с приоритетом 15:
nice -n 15 top
Изменение приоритета у существующего процесса
Для того, чтобы изменить приоритет у существующего процесса (т.е. такого процесса, который ранее был уже запущен), необходимо воспользоваться командой renice
renice [значение приоритета] -p [id процесса]
В противном случае, вы будете получать ошибку примерно такого содержания:
renice: failed to set priority for 91197 (process ID): Permission denied
sudo renice 0 -p 15483
15483 (process ID) old priority 15, new priority 0
Мы изменили приоритет у существующего процесса (команда top из предыдущего примера) с 15 на 0.
Добавить комментарий