Коротка відповідь
PR - пріоритетний рівень. Чим нижчий PR, тим вищим буде пріоритет процесу.
PR розраховується так:
- для нормальних процесів: PR = 20 + NI (NI хороший і коливається від -20 до 19)
- для процесів у режимі реального часу: PR = - 1 - real_time_priority
(реальний час_примірності становить від 1 до 99)
Довга відповідь
Існує 2 типи процесів, звичайний і в реальному часі
Для нормальних (і тільки для тих) приємний застосовується наступним чином:
Приємно
Шкала «приємності» становить від -20 до 19, тоді як -20 є найвищим пріоритетом, а 19 - найнижчим. Рівень пріоритету розраховується так:
PR = 20 + NI
Де NI - хороший рівень, а PR - пріоритетний рівень. Як ми бачимо, -20 насправді відображається до 0, тоді як 19 карт - 39.
За замовчуванням програмне значення nice дорівнює 0, але користувач root може запускати програми із заданим значенням nice за допомогою наступної команди:
nice -n <nice_value> ./myProgram
Реальний час
Ми могли б піти ще далі. Приємний пріоритет фактично використовується для програм користувача. Тоді як загальний пріоритет UNIX / LINUX має діапазон 140 значень, приємне значення дозволяє процесу відображати в останній частині діапазону (від 100 до 139). Це рівняння залишає значення від 0 до 99 недоступними, що відповідатиме негативному рівню PR (від -100 до -1). Щоб мати доступ до цих значень, процес слід зазначити як "реальний час".
У середовищі LINUX існує 5 політик планування, які можна відобразити за допомогою наступної команди:
chrt -m
Який буде показаний наступний список:
1. SCHED_OTHER the standard round-robin time-sharing policy
2. SCHED_BATCH for "batch" style execution of processes
3. SCHED_IDLE for running very low priority background jobs.
4. SCHED_FIFO a first-in, first-out policy
5. SCHED_RR a round-robin policy
Процеси планування можна розділити на 2 групи, звичайну політику планування (від 1 до 3) та політику планування в режимі реального часу (4 і 5). Процеси в режимі реального часу завжди матимуть пріоритет перед звичайними процесами. Процес у режимі реального часу може бути викликаний за допомогою наступної команди (Приклад - як оголосити політику SCHED_RR):
chrt --rr <priority between 1-99> ./myProgram
Для отримання значення PR для процесу в режимі реального часу застосовується таке рівняння:
PR = -1 - rt_prior
Там, де rt_prior відповідає пріоритету між 1 і 99. З цієї причини процес, який матиме більш високий пріоритет перед іншими процесами, буде називатися номером 99.
Важливо зазначити, що для процесів у режимі реального часу приємне значення не використовується.
Щоб побачити поточне "приємність" та значення PR процесу, можна виконати наступну команду:
top
Який показує такий вихід:
На малюнку відображаються значення PR та NI. Добре відзначити процес зі значенням PR -51, що відповідає значенню в реальному часі. Також є деякі процеси, значення PR яких зазначено як "rt". Це значення фактично відповідає значенню PR -100.
niceness
можна використовувати для надання негативного пріоритету, щоб завдання зniceness
виходом із шляху вищих пріоритетних завдань? (т. е. це дозволnice
та надання інших ресурсів доступу? Або це мене просто збентежило?