Меню
Главная
Случайная статья
Настройки
|
Утилита nice — компьютерная программа в UNIX-подобных ОС, предназначенная для запуска процессов с изменённым приоритетом nice. Приоритет nice (целое число) процесса используется планировщиком процессов ядра ОС при распределении процессорного времени между процессами, может называться cpu_nice[1] для отличения от приоритета io_nice[2], используемого планировщиком ввода-вывода и изменяемого утилитой ionice[3]. Утилита nice появилась в 4й версии ОС UNIX, разработанной фирмой AT&T[4]. Описана в стандарте IEEE Std 1003.1-2001 (POSIX.1)[4][5]. Одна из реализаций nice входит в пакет coreutils.
Следует различать термины «утилита» и «команда». Утилита — компьютерная программа, исполняемая в отдельном процессе. Команда — встроенная команда интерпретатора команд (shell), исполняемая внутри процесса shell.
Команда nice — встроенная команда интерпретатора команд (shell), выполняющая такие же функции, как и утилита nice, но работающая внутри процесса shell. Реализована, например, интерпретаторами команд csh и tcsh.
Приоритет nice — число, указывающее планировщику процессов ядра ОС приоритет, который пользователь хотел бы назначить процессу.
Содержание
Описание
Утилита nice, запущенная без аргументов, выводит приоритет nice, унаследованный от родительского процесса. nice принимает аргумент «смещение» в диапазоне от 20 (наивысший приоритет) до +19 (низший приоритет). Если указать смещение и путь к исполняемому файлу, утилита nice получит приоритет своего процесса, изменит его на указанное смещение и использует системный вызов семейства exec() [англ.] для замещения кода своего процесса кодом из указанного исполняемого файла. Команда nice сделает то же, но сначала выполнит системный вызов семейства fork() для запуска дочернего процесса (англ. sub-shell). Если смещение не указано, будет использовано смещение +10. Привилегированный пользователь (root) может указать отрицательное смещение.
Приоритет nice и приоритет планировщика процессов ядра ОС — разные числа. Число nice — приоритет, который пользователь хотел бы назначить процессу. Приоритет планировщика — действительный приоритет, назначенный процессу планировщиком. Планировщик может стремиться назначить процессу приоритет, близкий к nice, но это не всегда возможно, так как в системе может выполняться множество процессов с разными приоритетами. Приоритет nice является атрибутом процесса и, как и другие атрибуты, наследуется дочерними процессами. В выводе утилит top, ps, htop и др. приоритет nice называется «NI» — сокращение от «nice», а приоритет планировщика — «PRI» — сокращение от «priority». Обычно NI = PRI - 20, но это верно не всегда. По умолчанию NI=0, соответственно PRI=20.
Планировщик процессов ядра ОС Linux поддерживает приоритеты от 0 (реальное время) до 139 включительно[6]. Приоритеты 20…+19 утилиты или команды nice соответствуют приоритетам 100…139 планировщика процессов. Другие приоритеты планировщика процессов можно установить командой chrt из пакета util-linux.
Планировщик процессов ядра ОС FreeBSD поддерживает приоритеты от 20 до +20.
В ОС Linux для получения текущего приоритета nice процесса используется системный вызов getpriority() , а для его изменения — setpriority() [7].
Планировщик процессов может работать в соответствии с выбранной пользователем политикой (англ. scheduling policy). Некоторые политики могут игнорировать приоритет nice.
В ОС Linux с помощью системного вызова sched_getscheduler() можно узнать применяемую для текущего процесса политику планировщика процесса, а с помощью sched_setscheduler() — изменить её[8].
Для изменения приоритета уже запущенных процессов используется утилита renice.
Синтаксисnice [-n смещение] [--adjustment=смещение] [команда [аргумент…]]
Параметры- -n смещение
- --adjustment=смещение
- Установить приоритет nice, равный сумме текущего приоритета nice и указанного числа «смещение». Если этот аргумент не указан, будет использовано число 10.
Примечания
- CPU — англ. central processing unit, центральный процессор.
- IO — англ. input-output, ввод-вывод.
- ionice —
программа из пакета util-linux.
См.
ionice(1) — страница справки man по пользовательским командам GNU/Linux (англ.).
- 1 2
nice(1) — страница справки man по пользовательским командам FreeBSD (англ.).
- Утилита nice (неопр.). The Open Group. — The Open Group Base Specifications Issue 7. IEEE Std 1003.1, 2013 Edition. Дата обращения: 8 августа 2015. Архивировано 12 сентября 2015 года.
- См. исходный код ядра Linux:
-
getpriority(2) — страница справки man по системным вызовам GNU/Linux (англ.)
-
sched_getscheduler(2) — страница справки man по системным вызовам GNU/Linux (англ.)
Ссылки
|
|