Як добре працювати?


20

sched_setscheduler каже:

Весь планування є вигідним: якщо процес з вищим статичним пріоритетом стане готовим до запуску, поточний запущений процес буде вилучений та повернутий у список очікування для його статичного рівня пріоритету.

в той час як setpriority говорить

Це призводить до дуже низьких приємних значень (+19), щоб по-справжньому забезпечити трохи процесора для процесу, коли є будь-яке інше більш високе пріоритетне навантаження в системі, і робить високі приємні значення (-20) доставляти більшість ЦП до програм, які цього вимагають

Отже, як зміна приємного значення вплине на виконання програм? Це схоже на планування RT (де програма з більш високим значенням nice перерве програму з меншим приємним значенням)?


Вся інформація в Інтернеті полягає в тому, як користуватися niceі як змінити пріоритет процесу. Жодне посилання не пояснює, як саме працює процес з різними пріоритетами. Я навіть не зміг знайти вихідний код.

Відповіді:


24

Частка часу процесора, який отримує певний процес, визначається відносною різницею приємності між ним та іншими запущеними процесами.

Повністю справедливий планувальник Linux (CFS) розраховує вагу, виходячи з приємності. Вага приблизно еквівалентний 1024 / (1.25 ^ nice_value). Зі зменшенням приємного значення вага збільшується в експоненціальній формі. Часовий відрізок, виділений для процесу, пропорційний вазі процесу, поділеній на загальну вагу всіх запущених процесів. Реалізація CFS знаходиться в Росії kernel/sched/fair.c.

CFS має цільову затримку на тривалість планування. Менші затримки цілі приносять кращу інтерактивність, але зі зменшенням затримки цілі зменшується, тим самим збільшується загальна пропускна здатність.

Враховуючи, наприклад, затримку цілі в 20 мілісекунд і два запущені процеси однакової приємності, то обидва процеси будуть працювати протягом 10 мілісекунд кожен перед тим, як попередньо виграти на користь іншого процесу. Якщо є 10 процесів однакової приємності, кожен працює по 2 мілісекунди кожен.

Тепер розглянемо два процеси: один з приємністю 0 (за замовчуванням), а другий з приємністю 5. Пропорційна різниця між відповідними вагами становить приблизно 1/3, це означає, що процес з більш високим пріоритетом отримує часовий відрізок приблизно 15 мілісекунд тоді як процес нижчого пріоритету отримує часовий фрагмент в 5 мілісекунд.

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


Просто те, що я шукав. Спасибі! Пізніше я знайшов цю статтю, яка детально пояснює все, але не те, що ви щойно написали.
BЈович

Щось я не розумію. Яка роль гарячого часу?
Серфер восени

@Surferonthefall vruntime - це внутрішній механізм CFS, який відстежує багато процесів, що виділяються у процесорі. Це питання стосується приємного значення, видимого для простору користувачів. Якщо у вас є питання щодо внутрішніх служб CFS, і ви не можете знайти відповіді в іншому місці , задайте нове запитання
Thomas Nyman
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.