MyTetra Share
Делитесь знаниями!
Процессы в Linux. Установка приоритетов для процессов: nice, renice
Время создания: 07.02.2015 18:55
Текстовые метки: linux, процесс, приоритет, nice
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/1423324548xewmmylh86/text.html на raw.github.com

Установка приоритетов для процессов: 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

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


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования