4. Встановлення пріоритетів для процесів: nice, renice

Усе процеси в системі працюють з певними пріоритетами, також так званими “значеннями nice”, які можуть змінюватися від -20 (найвищий пріоритет) до 19 (найменший пріоритет). Якщо пріоритет не визначено, кожен процес запускатиметься з пріоритетом за умовчанням - 0 (“базовим” пріоритетом розподілу машинного часу). Для процесів із вищим пріоритетом (меншим значенням nice, аж до - 20) буде виділено більше системних ресурсів порівняно з іншими процесами з меншим пріоритетом (до 19), надаючи їм більшу кількість циклів процесора. Звичайні користувачі можуть знижувати пріоритет своїх власних процесів у діапазоні від 0 до 19. Суперкористувач (root) може встановити для будь-якого процесу будь-яке значення пріоритету.

4.1. renice

Якщо один чи кілька процесів використовують занадто багато ресурсів системи, ви можете змінити їх пріоритети замість того, щоб вбивати їх. Для цього використовуйте команду renice. Її синтаксис:

renice пріоритет [[-p] pid ...] [[-g] pgrp ...] [[-u] користувач ...]

де пріоритет - значення пріоритету, pid - ідентифікатор процесу (використовуйте опцію -p для вказівки кількох процесів), pgrp - ідентифікатор групи процесу (якщо їх кілька, використовуйте -g) і користувач - ім'я користувача, який є власником процесу (-u для кількох користувачів).

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

$ renice +15 785

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

Якщо ви системний адміністратор і бачите, що якийсь користувач запустив занадто багато процесів, і вони використовують занадто багато системних ресурсів, ви можете змінити пріоритет процесів цього користувача за допомогою однієї команди:

# renice +20 -u peter

Після цього всі процеси користувача peter отримають найменший пріоритет і не будуть ускладнювати роботу процесів інших користувачів.

4.2. nice

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

У цьому разі вам необхідно вказати свою команду як для опції nice. Опція -n використовується для встановлення значення пріоритету. За умовчанням nice встановлює пріоритет 10.

Наприклад, вам потрібно створити ISO-файл інсталяційного CD-ROM'а з Mandriva Linux:

$ dd if=/dev/cdrom of=~/mandriva1.iso

У деяких системах зі стандартним IDE CD-ROM процес копіювання великих обсягів інформації може захопити занадто багато ресурсів системи. Щоб запобігти блокуванню інших процесів через копіювання, ви можете запустити процес зі зниженим пріоритетом за допомогою цієї команди:

$ nice -n 19 dd if=/dev/cdrom of=~/mandriva1.iso