Приоритеты
Модератор: Olej
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Приоритеты
Потому, что это чисто условное число - приоритет, и можно считать по договорённости, что поток более приоритетный, если число это меньше, или число это больше (именно поток, потому что в многопоточной системе приоритеты относятся к потокам, а не к процессам).annika писал(а):Подскажите, пожалуйста, почему чем ниже nice, тем выше приоритет процесса?
В ОС QNX, например, договорились, что:
- минимальным приоритетом будут обладать потоки с приоритетом 1 (приоритет 0 "забронирован" для пустого потока idle) ...
- наивысший приоритет будет 63 в версии до QNX 6.3.2, и будет 255 для версий 6.4, 6.5.
В Linux договорились считать, что нормальный приоритет -19 соответствует самым приоритетным потокам, а приоритет +19 - самым низкоприоритетным.
Но в Linux есть ещё и приоритет реального времени, и если он не нулевой (что используется очень редко), то никакой поток нормального приоритета никогда не вытеснит такой поток реального времени, пока тот сам не заблокируется.
Поэтому и запуск процесса xxx делается на самом малом приоритете:
Код: Выделить всё
$ nice -n19 xxx
Код: Выделить всё
# nice -n-10 xxx
P.S. Из-за мудрёного динамического вычисления приоритета в ходе выполнения + алгоритма диспетчирования не зависящего от числа потоков/процессов (в ядре начиная с 2.6), в Linux особенности поведения процесса от повышения или понижения приоритета довольно трудно прогнозировать.
Re: Приоритеты
Спасибо!
я вот нашла еще такое обоснование:
Команда nice запускает программу с изменённым приоритетом для планироващика задач. Слово «nice» в английском языке обозначает, в частности, «вежливый». По этимологии этой команды процесс с большим значением nice — более вежлив к другим процессам, позволяя им использовать больше процессорного времени, поскольку он сам имеет меньший приоритет (и, следовательно, большее «значение вежливости» — niceness value).
http://habrahabr.ru/post/106381/
Уместно ли оно?
я вот нашла еще такое обоснование:
Команда nice запускает программу с изменённым приоритетом для планироващика задач. Слово «nice» в английском языке обозначает, в частности, «вежливый». По этимологии этой команды процесс с большим значением nice — более вежлив к другим процессам, позволяя им использовать больше процессорного времени, поскольку он сам имеет меньший приоритет (и, следовательно, большее «значение вежливости» — niceness value).
http://habrahabr.ru/post/106381/
Уместно ли оно?
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Приоритеты
Так оно и есть...annika писал(а): Команда nice запускает программу с изменённым приоритетом для планироващика задач. Слово «nice» в английском языке обозначает, в частности, «вежливый». По этимологии этой команды процесс с большим значением nice — более вежлив к другим процессам, позволяя им использовать больше процессорного времени, поскольку он сам имеет меньший приоритет (и, следовательно, большее «значение вежливости» — niceness value).
http://habrahabr.ru/post/106381/
Уместно ли оно?
У nice ещё перевод - "уступчивость" ... что уж совсем объясняет выбор названия команды.
Только это к выбору численных значений приоритетов (что выше, а что ниже) не имеет никакого отношения
А если кого заинтересует управление приоритетами (утилита nice - это только консольный интерфейс к нему), то см. /usr/include/sched.h :
Код: Выделить всё
/* Set scheduling parameters for a process. */
extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
__THROW;
Код: Выделить всё
/* The official definition. */
struct sched_param
{
int __sched_priority;
};
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя