Як встановити пріоритети процесу за допомогою nice and renice в Linux

Команди nice і renice дозволяють точно налаштувати, як ядро ​​обробляє ваші процеси, регулюючи їхні пріоритети. Прочитайте цей посібник, щоб дізнатися, як використовувати їх у Linux та Unix-подібних операційних системах, таких як macOS.

Все це питання процесу

Усередині вашого комп’ютера, подібного до Linux або Unix, буде виконуватися багато процесів ще до того, як ви запустите програму, яку хочете використовувати. Більшість цих процесів є життєво важливими елементами самого Linux або допоміжними процесами для вашого графічного середовища робочого столу. Багато чого відбувається за лаштунками. Звичайно, існує лише так багато системних ресурсів і процесорного часу. Ядро Linux є контролером для всіх цих процесів.

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

Гарне значення

Одним із критеріїв, що використовуються для визначення того, як ядро ​​ставиться до процесу, є хороша вартість. Кожен процес має хорошу цінність. Приємне значення — це ціле число в діапазоні від -19 до 20. Усі стандартні процеси запускаються з хорошим значенням нуля.

  Як встановити програмне забезпечення Bluecherry Surveillance на Linux

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

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

Гарна Команда

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

Припустимо, програміст написав програму під назвою ackermann. Це обчислює Функції Аккермана. Це інтенсивний процесор і пам’ять. Програміст може запустити програму за допомогою такої команди:

./ackermann

Ми можемо використовувати команду top для перегляду запущеної програми.

top

Ми бачимо деталі програми Аккермана вгорі. Приємним значенням є цифра в стовпці «NI». Він встановлений на нуль, як ми і очікували.

  Як зберегти DVD-диски та Blu-ray на вашому ПК з Linux

Давайте перезапустимо його і цього разу зробимо його менш вимогливим. Ми встановимо гарне значення 15 для програми Аккермана наступним чином. Введіть nice, пробіл, -15, інший пробіл, а потім назву програми, яку ви хочете запустити. У нашому прикладі наш фіктивний програміст використовує ./ackermann.

nice -15 ./ackermann

Зверніть увагу, «-15» не є від’ємним п’ятнадцятьм. Позитивний п’ятнадцять. Знак «-» потрібен, щоб сказати, що ми передаємо параметр. Щоб позначити від’ємне число, потрібно ввести два символи «-».

Якщо ми знову почнемо зверху, то побачимо зміни в поведінці Аккермана.

top

З хорошим значенням 15, ackermann не споживає найбільше часу процесора. GNOME і Rhythmbox використовують більше. Ми трохи зупинили Аккермана.

Тепер давайте зробимо зворотне і дамо ackermann негативне значення nice. Зверніть увагу на використання двох символів «-». Щоб зробити програму більш егоїстичною та менш приємною, ви повинні використовувати sudo. Будь-хто може зробити свою програму більш приємним, але тільки суперкористувачі можуть зробити його більш егоїстичним.

sudo nice --10 ./ackermann

Давайте пройдемося зверху і подивимося, що це змінило.

top

Цього разу ackermann має гарне значення -10. Він повернувся на верхній рядок і споживає більше процесорного часу, ніж раніше.

Команда renice

Команда renice дозволяє нам налаштувати хороше значення запущеного процесу. Нам не потрібно зупиняти його і перезапускати з nice. Ми можемо встановити нове значення на льоту.

  Як розмістити спільні файли NFS на Linux

Команда renice приймає ідентифікатор процесу або PID процесу як параметр командного рядка. Ми можемо або витягти ідентифікатор процесу зі стовпця «PID» у верхній частині, або ми можемо використовувати ps і grep, щоб знайти його, як показано нижче. Очевидно, ви введете ім’я вашого користувача замість dave і назву процесу, який вас цікавить, замість ackermann.

ps -eu dave | grep ackermann

Тепер, коли у нас є PID, ми можемо використовувати його з renice. Ми збираємось повернути Акермана до кращої поведінки з хорошим значенням п’ять. Щоб змінити хороше значення для запущеного процесу, ви повинні використовувати sudo. Зверніть увагу, що в параметрі 5 немає «-». Для додатних чисел вам не потрібен один, а для від’ємних чисел потрібен лише один, а не два.

sudo renice -n 5 2339

Ми отримуємо підтвердження, що renice змінила значення nice. Він показує нам старе значення і нове значення.

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