Согласно справочной странице и википедии; nice
колеблется от -20 до 20.
Тем не менее, когда я запускаю следующую команду, я обнаруживаю, что некоторые процессы имеют не числовое значение, например (-). Смотрите шестой столбец слева с заголовком «NI».
На что указывает милость (-)?
ps axl
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1 0 20 0 19356 1548 poll_s Ss ? 0:00 /sbin/init
1 0 2 0 20 0 0 0 kthrea S ? 0:00 [kthreadd]
1 0 3 2 -100 - 0 0 migrat S ? 0:03 [migration/0]
1 0 4 2 20 0 0 0 ksofti S ? 0:51 [ksoftirqd/0]
1 0 5 2 -100 - 0 0 cpu_st S ? 0:00 [migration/0]
5 0 6 2 -100 - 0 0 watchd S ? 0:09 [watchdog/0]
1 0 7 2 -100 - 0 0 migrat S ? 0:08 [migration/1]
1 0 8 2 -100 - 0 0 cpu_st S ? 0:00 [migration/1]
1 0 9 2 20 0 0 0 ksofti S ? 1:03 [ksoftirqd/1]
5 0 10 2 -100 - 0 0 watchd S ? 0:09 [watchdog/1]
1 0 11 2 -100 - 0 0 migrat S ? 0:05 [migration/2]
Я проверил 3 запущенных сервера: Ubuntu 12.04 и CentOs 6.5 и Mac OsX 10.9. Только машины с Ubuntu и CentOs имеют нецифровые значения добротности.
[brackets]
есть, на самом делеkthread
s (потоки ядра).Ответы:
Обратите внимание, что у них также есть оценка PRI -100; это указывает, что процесс запланирован как процесс в реальном времени . Процессы реального времени не используют хорошие оценки и всегда имеют более высокий приоритет, чем обычные, но все же отличаются друг от друга.
Вы можете просмотреть детали каждого процесса с помощью
chrt
команды (напримерchrt -p 3
). Один из ваших -100, скорее всего, сообщит о «текущем приоритете планирования», равном 99 - в отличие от этогоnice
, здесь высокие значения имеют более высокий приоритет, который, вероятно, является тем, откуда верхнее число создало-100
число. Процессы не в реальном времени всегда будут показывать «текущий приоритет планирования», равный 0,chrt
независимо от значения nice, а в linux - «текущую политику планирования»SCHED_OTHER
.Некоторые версии ,
top
кажется, сообщают процессы в реальном времени сrt
под ПОИ , а затем0
под NI .источник
-100
но не мог понять это :)Ответ @ Goldlilock направил меня на исследование в правильном направлении. Это мои подробности исследования.
Алгоритмы планирования доступны для процессов
Linux поддерживает 3 политики планирования.
SCHED_FIFO
,SCHED_RR
иSCHED_OTHER
.SCHED_OTHER
универсальная политика планировщика с разделением времени по умолчанию, используемая большинством процессов;SCHED_FIFO
иSCHED_RR
предназначены для специальных критичных ко времени приложений, которые нуждаются в точном контроле выбора выполняемых процессов для выполнения.Доступные приоритеты
Чтобы выбрать процесс для запуска, планировщик Linux должен учитывать приоритет каждого процесса. На самом деле, есть два вида приоритетов.
Значение статического приоритета присваивается каждому процессу, и планирование зависит от этого статического приоритета. Запланированные процессы
SCHED_OTHER
имеют статический приоритет 0; процессы, запланированные в рамкахSCHED_FIFO
илиSCHED_RR
могут иметь статический приоритет в диапазоне1
до99
(99 - наивысший).Процедура
sys_sched_get_priority_max( )
возвращает статический приоритет процесса, она возвращается0
для процессов не в реальном времени.Динамический приоритет используется для приложений не в реальном времени.
Все процессы в реальном времени имеют более высокий приоритет, чем обычные процессы. Linux реализует приоритеты в реальном времени в соответствии с POSIX. Приведенный ниже график может дать обзор того, как процессы планируются с их приоритетами.
Теперь мы можем выполнить приведенную ниже команду, чтобы проверить приоритет процесса в реальном времени. Здесь я использую сторожевой таймер, поскольку он имеет хорошее значение, указанное в качестве -.
Это вывод команды выше. Как мы видим, приоритет в реальном времени равен 99, что является наивысшим из возможных приоритетов.
Таким образом, согласно моему пониманию, приоритет в реальном времени может принимать максимальное значение 99, и поэтому не может быть никакого хорошего значения над ним. По этой причине мы получаем хороший результат как для сторожевого таймера и других системных процессов.
Ссылки
http://oreilly.com/catalog/linuxkernel/chapter/ch10.html http://atipaday.wordpress.com/2008/08/19/atad-21-linux-process-priority-range/
источник