На этом шаге вы узнаете, как влиять на приоритет планирования процессов с помощью команд nice и renice. Значение nice (также известное как niceness) процесса указывает его приоритет для планировщика Linux. Более низкое значение nice (более отрицательное) означает более высокий приоритет, в то время как более высокое значение nice (более положительное) означает более низкий приоритет. Диапазон значений nice обычно от -20 (самый высокий приоритет) до 19 (самый низкий приоритет), при этом 0 является значением по умолчанию.
-
Запустите несколько экземпляров sha1sum /dev/zero &, а затем запустите еще один экземпляр со значением nice 10.
Мы запустим несколько процессов sha1sum, чтобы смоделировать занятую систему. Затем мы запустим один с намеренно более низким приоритетом (более высоким значением nice), чтобы наблюдать эффект.
Сначала запустите три обычных экземпляра (настройте в зависимости от количества ядер вашего ЦП, если хотите, но не менее, чем виртуальных процессоров, чтобы создать конкуренцию):
for i in {1..3}; do sha1sum /dev/zero & done
Затем запустите четвертый экземпляр со значением nice 10. Этот процесс будет иметь более низкий приоритет по сравнению с другими.
nice -n 10 sha1sum /dev/zero &
Вы увидите вывод, похожий на этот, указывающий PID фоновых процессов:
[1] 5443
[2] 5444
[3] 5445
[4] 5446
(Примечание: значения PID в вашем выводе будут отличаться.)
-
Используйте команды ps и pgrep, чтобы отобразить PID, процент использования ЦП, значение nice и имя исполняемого файла для каждого процесса.
Обратите внимание на столбцы %CPU и NI. Экземпляр со значением nice 10 должен отображать меньший процент использования ЦП, чем другие экземпляры, поскольку планировщик выделяет ему меньше времени ЦП.
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
Найдите процесс со значением NI 10. Его %CPU должен быть заметно ниже, чем у других.
PID %CPU NI COMMAND
5443 56.8 0 sha1sum
5444 58.0 0 sha1sum
5445 56.5 0 sha1sum
5446 6.7 10 sha1sum
(Примечание: точные значения %CPU будут варьироваться в зависимости от нагрузки на систему и количества ядер, но процесс с nice 10 должен иметь меньшую долю.)
-
Используйте команду sudo renice, чтобы изменить значение nice одного из обычных процессов на 5.
Команда renice позволяет изменить значение nice уже запущенного процесса. Мы продемонстрируем это, изменив один из обычных процессов (значение nice 0) на значение nice 5.
Сначала определите PID одного из процессов sha1sum, имеющего значение nice 0, из вывода предыдущей команды ps. Давайте используем первый из приведенного выше примера (PID 5443).
sudo renice -n 5 <PID_of_regular_process>
Замените <PID_of_regular_process> фактическим PID, который вы определили. Например:
sudo renice -n 5 5443
Вы должны увидеть вывод, подтверждающий изменение приоритета:
5443 (process ID) old priority 0, new priority 5
-
Повторите команды ps и pgrep, чтобы отобразить процент использования ЦП и значение nice.
Наблюдайте изменение использования ЦП для процесса, значение nice которого вы изменили. Процесс со значением nice 5 теперь должен иметь немного меньшее использование ЦП по сравнению с процессами со значением nice 0, но больше, чем процесс со значением nice 10.
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
Вы должны увидеть, что значение NI для измененного процесса теперь равно 5, и его использование ЦП отражает его новый уровень приоритета.
PID %CPU NI COMMAND
5443 55.4 5 sha1sum
5444 67.2 0 sha1sum
5445 67.1 0 sha1sum
5446 7.5 10 sha1sum
(Примечание: точные значения %CPU будут варьироваться, но вы должны наблюдать, что процессы с более низкими значениями nice (более высоким приоритетом) получают больше времени ЦП.)