Що означає значення приємності (-)?


19

Відповідно до сторінки людини та вікіпедії; 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]

Я перевірив три запущені сервери: Ubuntu 12.04 та CentOs 6.5 та Mac OsX 10.9. Тільки машини Ubuntu та CentOs мають нецифрові значення приємності.


FYI: Усі ці процеси, в яких є назви [brackets], насправді kthreads (нитки ядра).
Джонатан Райнхарт

Відповіді:


18

Про що свідчить приємність (-)?

Зверніть увагу, що вони також мають показник PRI -100; це вказує, що процес планується як процес у режимі реального часу . Процеси в режимі реального часу не використовують хороших балів і завжди мають більш високий пріоритет, ніж звичайні, але все одно відрізняються один від одного.

Ви можете переглянути деталі для кожного процесу за допомогою chrtкоманди (наприклад chrt -p 3). Один з ваших -100, ймовірно, повідомить про "поточний пріоритет планування" 99 - на відміну nice, тут великі значення мають більш високий пріоритет, імовірно, там, де вгорі створено -100число. Процеси, що не в режимі реального часу, завжди показуватимуть "пріоритет поточного планування" 0, chrtнезалежно від приємного значення, а під Linux - "поточна політика планування" SCHED_OTHER.

Тільки машини Ubuntu та CentOs мають нецифрові значення приємності.

Деякі версії, topздається, повідомляють про процеси в реальному часі rtза допомогою PRI, а потім 0під NI .


Чудова відповідь. Я знав, що це має щось спільне, -100але не міг цього зрозуміти :)
Рамеш

6

@ Відповідь Голдлока спрямовувала мене робити дослідження правильним шляхом. Це моя деталь дослідження.

Алгоритми планування, доступні для процесів

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. Графік нижче може дати огляд того, як плануються процеси з їх пріоритетами.

HIGH PRIORITY – - – - – > – - – - – > – - – - – > – - – - – > – - – – LEAST PRIORITY
……..real time priority (static priority)…….| …. nice value (dynamic priority) …..
99 ……………………….. 50 ……………………… 1 | -20 …….. -10 …….. 0 …….. 10 ……. 19

Тепер ми можемо випустити команду нижче, щоб перевірити пріоритет процесу в реальному часі. Тут я використовую сторожовий дог, оскільки він мав хороше значення, вказане як -.

ps -e -o class,rtprio,pri,nice,cmd | grep watchdog

Це вихідна команда. Як ми бачимо, пріоритет у реальному часі - 99, що є найвищим можливим пріоритетом.

FF      99 139   - [watchdog/0]
FF      99 139   - [watchdog/1]
TS       -  21   0 grep watchdog

Тож, наскільки я розумію, пріоритет у реальному часі може мати максимальне значення 99, тому над цим не може бути жодного приємного значення. Саме тому ми отримуємо хороший вихід як для сторожових та інших системних процесів.

Список літератури

http://oreilly.com/catalog/linuxkernel/chapter/ch10.html http://atipaday.wordpress.com/2008/08/19/atad-21-linux-process-priority-range/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.