Зміна пріоритету виконання команди nice і renice

Фактор "поступливості" - це число, за яким ядро ​​визначає свою політику щодо процесів, які конкурують за право доступу до центрального процесора. Чим вище фактор поступливості, тим нижче пріоритет процесу і навпаки, звідси і назва терміна. Низьке або негативне значення означає використання високого пріоритету: процес веде себе не дуже поступливо.

Діапазон допустимих значень фактора поступливості залежить від використовуваної системи, і зазвичай він лежить в межах від -20 до +19. У деяких системах використовується діапазон такого ж розміру, але зі зміщенням в область невід'ємних чисел (як правило, від 0 до 39). Діапазони допустимих значень фактора поступливості, використовувані в наших прикладах систем, наведені нижче.

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

В даний час адміністраторам рідко доводиться визначати пріоритети вручну. Коли операційні системи працювали на малопотужних комп'ютерах 70-80 рр. на продуктивність найбільше впливало те, який процес займав основну частину часу центрального процесора. Сьогодні, коли на робочих столах стоять набагато більш швидкодіючі комп'ютери, системний планувальник, як правило, обслуговує всі процеси досить оперативно. Додавання класів планування надає розробникам додаткові засоби управління в тих випадках, коли важлива швидка реакція.

На жаль, рівень продуктивності підсистеми вводу-виводу зростає не так стрімко, як швидкодія центральних процесорів, тому жорсткі диски стали основним вузьким місцем в більшості операційних систем. Фактор поступливості ніяк не впливає на підсистеми управління пам'яттю і введенням-висновком, тому навіть фоновий процес здатний монополізувати ці ресурси або захопити непропорційно велику їх частину.

Фактор поступливості можна встановити при створенні процесу. Це робиться за допомогою команди nice. Команда renice дозволяє змінювати пріоритет виконуваного процесу. Перша з цих команд приймає в якості аргументу рядок запуску процесу, а друга - ідентифікатор процесу або ім'я користувача.

/ Bin / longtask // Знижуємо пріоритет (збільшуємо

// фактор поступливості) на 5

$ Sudo renice -5 8829 // Задаємо фактор поступливості рівним -5

$ Sudo renice 5 -u boggs // Задаємо фактор поступливості процесів

// користувача "boggs" рівним 5

На жаль, в системах по-різному реалізований спосіб установки бажаного пріоритету; більш того, навіть в рамках однієї і тієї ж системи не узгоджені механізми дії команд nice і renice. Одні команди вимагають вказівки відносного значення фактора поступливості, а інші - абсолютного. В одних командах потрібно перед значенням фактора поступливості ставити дефіс, в інших потрібно прапор -п, а треті "задовольняються" просто числовим значенням.

Існує також версія команди nice, вбудована в інтерпретатор csh і ряд інших популярних інтерпретаторів (але не в bash). Якщо не вказати повне ім'я команди, буде викликана саме вбудована версія, а не системна. Це багатьох збиває з пантелику, так як синтаксис команд різний: вбудована версія вимагає, щоб зміна пріоритету записувалося в форматі + інкр або -декр, а системна версія очікує прапор -п, за яким слідує значення пріращенія8.

Елемент пріор для середовища, в якій викликається команда nice або renice, означає абсолютне значення фактора поступливості, а інкр - відносне. Скрізь, де вказується значення -інкр або -декр, для введення від'ємних значень можна використовувати два дефіса (наприклад -10). Знаки "плюс" в команді nice обов'язкові тільки для інтерпретатора команд; в інших випадках вони ігноруються.

Найпоширеніший з високопріоритетних процесів в сучасних системах - ntpd, демон тактової синхронізації. Оскільки для нього швидкий доступ до центрального процесора має дуже велике значення, цього демона зазвичай призначається фактор поступливості, на 2 позицій нижче стандартного рівня.

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

Схожі статті