Как хорошо работать?

sched_setscheduler говорит:

Все планирование является превентивным: если процесс с более высоким статическим приоритетом становится готовым к запуску, текущий процесс будет выгружен и возвращен в список ожидания для его статического уровня приоритета.

в то время как setpriority говорит

Это приводит к очень низким хорошим значениям (+19), чтобы по-настоящему обеспечить небольшой процессор для процесса всякий раз, когда в системе есть другая более высокая приоритетная нагрузка, и делает высокие хорошие значения (-20) доставляют большую часть процессора в приложения, которые этого требуют

Итак, как меняется хорошая ценность, влияющая на выполнение программ? Схоже ли это с RT-планированием (где программа с более высоким хорошим значением собирается прервать программу с более низким хорошим значением)?


Вся информация в Интернете заключается в том, как использовать nice и как изменить приоритет процесса. Никакая ссылка не объясняет, как работает процесс с другим приоритетом. Я даже не мог найти исходный код.

  • Как я могу запустить две команды подряд из cron?
  • Как я могу запланировать запуск программы python из другой программы python?
  • Что означает «INFO: задача XXX, заблокированная на протяжении более 120 секунд», в точности означает Linux?
  • Каков минимальный круглый интервал шифрования, поддерживаемый Linux?
  • как сказать crontab выполнить команду с этого момента
  • Высокая загрузка процессора с помощью CFS?
  • Исключая конкретную дату и время в cronjob
  • Как я могу автоматизировать задачу на определенном событии?
  • One Solution collect form web for “Как хорошо работать?”

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

    Полностью честный планировщик Linux (CFS) вычисляет вес, основанный на тонкости. Вес примерно эквивалентен 1024 / (1.25 ^ nice_value) . По мере того как хорошее значение уменьшается, вес увеличивается экспоненциально. Временной лимит, выделенный для процесса, пропорционален весу процесса, деленному на общий вес всех выполняемых процессов. Реализация CFS выполняется в kernel/sched/fair.c

    CFS имеет целевую задержку для продолжительности планирования. Меньшие целевые задержки обеспечивают лучшую интерактивность, но по мере уменьшения целевой задержки увеличивается накладные расходы на переключение, снижая тем самым общую пропускную способность.

    Учитывая, например, целевую задержку в 20 миллисекунд и два выполняемых процесса равной степени удовлетворенности, тогда оба процесса будут выполняться в течение 10 миллисекунд каждый, прежде чем будут упреждаться в пользу другого процесса. Если есть 10 процессов с одинаковой доброжелательностью, каждый из них работает по 2 миллисекунды каждый.

    Теперь рассмотрим два процесса: один с хорошностью 0 (по умолчанию), другой с хорошностью 5. Пропорциональная разница между соответствующими весами составляет примерно 1/3, что означает, что процесс с более высоким приоритетом получает временной интервал около 15 миллисекунд в то время как процесс с более низким приоритетом получает временной интервал в 5 миллисекунд.

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

    Linux и Unix - лучшая ОС в мире.