Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Установка приоритетов для процессов: nice, renice

Пред. 

Глава 6. Управление процессами

 След.


Установка приоритетов для процессов: nice, renice

Все процессы в системе работают с определёнными приоритетами, также называемыми «значениями nice», которые могут изменяться от -20 (наивысший приоритет) до 19 (наименьший приоритет). Если оно не определено, каждый процесс будет запускаться с приоритетом по умолчанию - 0 («базовым» приоритетом распределения машинного времени). Для процессов с более высоким приоритетом (меньшим значением nice, вплоть до -20) будет выделено больше системных ресурсов по сравнению с другими процессами с меньшим приоритетом (до 19), предоставляя им большее число циклов процессора. Все пользователи, кроме рута, могут только понижать приоритет своих собственных процессов в диапазоне от 0 до 19. Суперпользователь (root) для любого процесса может установить любое значение приоритета.

renice

Если один или несколько процессов используют слишком много ресурсов системы, вы можете изменить их приоритеты вместо того, чтобы убивать их. Для этого используется команда renice. Ее синтаксис:

renice приоритет [[-p] pid ...] [[-g] pgrp ...] [[-u] пользователь ...]

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

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

$ renice +15 785

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

Если вы системный администратор и заметили, что какой-то пользователь запустил слишком много процессов, и они используют слишком много системных ресурсов, вы можете изменить приоритет процессов этого пользователя при помощи одной команды:

# renice +20 -u peter

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

nice

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

В этом случае вам необходимо указать свою команду в качестве опции для nice. Опция -n используется для установки значения приоритета. По умолчанию nice устанавливает приоритет 10.

Например, вам нужно создать ISO-образ установочного CD-ROM'а с Mandrakelinux:

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

В некоторых системах со стандартным IDE CD-ROM процесс копирования больших объёмов информации может захватить слишком много ресурсов системы. Чтобы предотвратить блокирование других процессов из-за копирования, вы можете запустить процесс с пониженным приоритетом при помощи этой команды:

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

и продолжать заниматься своими делами.


Пред. 

Уровень выше

 След.

Отправка сигналов процессам: kill, killall и top 

Начало

 Часть II. Углублённое изучение Linux