Команда nice
позволяет вам настроить приоритет планирования («правильность») программы. Во всех Unix-подобных системах, которые я использовал, милость определяется диапазоном целых чисел, где -20 - наиболее предпочтительный приоритет планирования, 0 - по умолчанию, а 19 - наименее благоприятный.
Наличие 0 в качестве точности по умолчанию достаточно интуитивно понятно, но почему в качестве конечных точек диапазона были выбраны -20 и 19? Почему бы не -128 и 127, которые бы точно вписались в 8-битный байт со знаком? Или почему бы не от -100 до 100, что более интуитивно понятно для людей с десятичными мыслями, или аналогично, но немного более эргономично, от -99 до 99? Был ли выбран диапазон от -20 до 19 произвольно, или он имеет какое-то отношение к внутренним компонентам планировщика, с которым nice
первоначально взаимодействовал? (Я понимаю, что сегодня таких отношений нет, по крайней мере для Linux, чей планировщик использует приоритеты в диапазоне от 0 до 139. Однако меня интересуют исторические причины диапазона от -20 до 19.)
источник
min(127, (recent CPU usage on a scale of 0 to 15) + 50 + pp->p_nice - 20
), а приоритеты <25 были зарезервированы для процессы делают бесперебойные вещи. Так что милость должна была быть ограниченным диапазоном.Ответы:
Внутренние уровни милосердия 0-39, но приращения положительные или отрицательные. Источник . Таким образом, ответ заключается в том, что числа (положительные и отрицательные), принятые
nice
командой, дают вам значение от 20, уровень по умолчанию, до любого значения в диапазоне 0–39.Так почему 0-39? Конкретный диапазон был тем, что работало в оригинальной реализации дизайнеров. Причина, по которой более позитивные значения более приятные, заключается в том, что хороший уровень добавляется к недавнему использованию процессора процессом при определении приоритета. Чтобы обеспечить приблизительное циклическое планирование, ядро отслеживает, сколько ЦП было сожжено каждым процессом в последнее время, и переключается на процессы, которые не имели такого количества. Чем выше хороший уровень, тем больше процессорного времени он выглядит, как процесс, и тем чаще планировщик переводит этот процесс в спящий режим или оставляет его в спящем режиме. См . Проект операционной системы UNIX Мориса Дж. Баха, Прентис-Холл, 1986, с. 8.1 (специально для 8.1.4). ISBN 0-13-201799-7.
источник
Вы ошибаетесь: если вы находитесь в UNIX, где интерфейс nice () все еще имеет смысл,
NZERO
это значение nice по умолчанию иNZERO is 20
.Чтобы сделать это более очевидным: вы спросили о команде
nice
и в то же время упомянули абсолютные уровни, но команда nice не управляет абсолютными значениями, а скорее увеличивает их относительно текущего уровня. В случае состояния по умолчанию, хороший уровеньNZERO
- 20.Хорошие значения: 0..2 * NZERO-1 или 0..39
Обратите внимание, что хотя планировщик UNIX по умолчанию все еще может делать что-то полезное с хорошим значением, это не имеет смысла, если вы используете специализированный планировщик, например планировщик реального времени.
источник
nice
оболочки.