При запуске top
я вижу этот (сокращенный) пример вывода:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4586 ipc-adm+ 20 0 1303900 605152 92844 S 30,6 29,3 3:52.88 firefox
3985 ipc-adm+ 20 0 258588 124508 63072 S 12,2 6,0 0:40.04 compiz
3092 root 20 0 172392 56164 25980 S 6,1 2,7 0:30.13 Xorg
Есть два значения, которые меня интересуют: PR
(приоритет) и NI
(милость).
Если я правильно понял то, что уже выяснил, оба определяют, сколько процессорного времени процесс получит в отличие от других процессов. Но в чем же разница между этими значениями?
Не могли бы вы также описать, как манипулировать этими значениями процесса и при каких обстоятельствах это может быть полезно?
источник
niceness
можно использовать для предоставления отрицательного приоритета, чтобы задача сniceness
уходом с пути высокоприоритетных задач? (то есть онnice
позволяет другим ресурсам доступа? Или это меня просто смутило?pr
20, так что они равны, задача 1 имеет значениеni
0, а задача 2 имеет значениеni
20, поэтому это будет означать, что задача 2 будет выделять ресурсы для задачи 1, потому что этоnicer
Что такое приоритет и почему я должен заботиться?
Когда речь идет о процессах, приоритет заключается в управлении временем процессора. Процессор или ЦП - это как человек, жонглирующий несколькими задачами одновременно. Иногда у нас может быть достаточно места для нескольких проектов. Иногда мы можем сосредоточиться только на одном. Иногда всплывает что-то важное, и мы хотим посвятить всю свою энергию решению этой проблемы, оставляя менее важные задачи на заднем плане.
В Linux мы можем установить руководящие указания для процессора, чтобы он следовал, когда он смотрит на все задачи, которые он должен выполнить. Эти рекомендации называются любезностью или приятной ценностью. Шкала добротности Linux варьируется от -20 до 19. Чем меньше число, тем больше приоритет получает задача. Если значение добротности велико, например, 19, задание будет иметь самый низкий приоритет, и ЦПУ будет обрабатывать его всякий раз, когда у него появляется такая возможность. Хорошее значение по умолчанию - ноль.
Используя эту шкалу, мы можем распределить ресурсы нашего ЦП более подходящим образом. Для программ с более низким приоритетом, которые не важны, можно установить более высокое приятное значение, в то время как программы с высоким приоритетом, такие как демоны и сервисы, могут быть настроены так, чтобы они больше фокусировались на процессоре. Вы даже можете дать конкретному пользователю более низкое значение для всех его / ее процессов, чтобы вы могли ограничить их способность замедлять работу основных служб компьютера.
Источник
Установите приоритет для новых процессов с помощью
nice
, например,для существующих процессов
Чтобы установить приоритет,
<0
вам нужноsudo
, например:но не для приоритета
>=0
пример
Другой пример
Чтобы сдать в аренду все запущенные процессы для конкретного пользователя
источник
renice 10
это также будет работать безsudo
, верно? И не могли бы вы добавить пример, чтобы сделать все процессы конкретного пользователя более приятными? Это было бы очень полезно, если бы кто-то еще вошел в систему одновременно и запустил несколько ненужных, но ресурсоемких процессов (как приостановленная flash-игра в Firefox, маленькие братья делают такие вещи ...: - /)0
либо ... есть проблема;)ps
является:PRI: 38, NI: -19
, однако,top
этоPR:1, NI -19
почему?Краткий ответ
PR является приоритетным уровнем. Чем ниже PR, тем выше будет приоритет процесса.
PR рассчитывается следующим образом:
Длинный ответ
Существует два типа процессов: обычные и в реальном времени. Для обычных (и только для них) метод nice применяется следующим образом:
Приятно
Шкала «добротности» варьируется от -20 до 19, тогда как -20 - самый высокий приоритет, а 19 - самый низкий приоритет. Уровень приоритета рассчитывается следующим образом:
PR = 20 + NI
Где NI - хороший уровень, а PR - уровень приоритета. Итак, как мы видим, -20 фактически отображается на 0, а 19 - на 39.
По умолчанию значение nice программы равно 0, но пользователь root может запускать программы с указанным значением nice с помощью следующей команды:
В реальном времени
Мы могли бы пойти еще дальше. Хороший приоритет на самом деле используется для пользовательских программ. Тогда как общий приоритет UNIX / LINUX имеет диапазон 140 значений, значение nice позволяет процессу отображать последнюю часть диапазона (от 100 до 139). Это уравнение оставляет недоступными значения от 0 до 99, которые будут соответствовать отрицательному уровню PR (от -100 до -1). Чтобы иметь возможность доступа к этим значениям, процесс должен быть указан как «в реальном времени».
В среде LINUX существует 5 политик планирования, которые можно отобразить с помощью следующей команды:
Который покажет следующий список:
Процессы планирования могут быть разделены на 2 группы: обычные политики планирования (от 1 до 3) и политики планирования в реальном времени (4 и 5). Процессы реального времени всегда будут иметь приоритет над обычными процессами. Процесс в реальном времени может быть вызван с помощью следующей команды (например, как объявить политику SCHED_RR):
Для получения значения PR для процесса в реальном времени применяется следующее уравнение:
PR = -1 - rt_prior
Где rt_prior соответствует приоритету между 1 и 99. По этой причине процесс, который будет иметь более высокий приоритет по сравнению с другими процессами, будет вызываться с номером 99.
Важно отметить, что для процессов реального времени значение nice не используется.
Чтобы увидеть текущую «привлекательность» и значение PR процесса, можно выполнить следующую команду:
Который показывает следующий вывод:
На рисунке показаны значения PR и NI. Хорошо отметить процесс со значением PR -51, которое соответствует значению в реальном времени. Есть также некоторые процессы, чье значение PR указано как «rt». Это значение фактически соответствует значению PR -100.
источник