Влияет ли использование setpriority() на мою политику планирования SCHED_OTHER?

Моя политика планирования - SCHED_OTHER. Будет ли изменение в хорошем значении с помощью setpriority() иметь какое-либо влияние. Когда я использовал это, я не вижу никакой разницы.

2 ответа

Решение
Ответ - нет. Приоритет set не должен влиять на процесс в этом случае. Согласно документации: http://linux.die.net/man/3/setpriority > Любые процессы или потоки, использующие SCHED_FIFO или SCHED_RR, не должны подвергаться воздействию вызова setpriority(). Это не считается ошибкой. Процесс, который впоследствии возвращается к SCHED_OTHER, не должен подвергаться влиянию своего приоритета таким вызовом setpriority().

Извините, но внимательно читаю http://man7.org/linux/man-pages/man7/sched.7.html:

SCHED_OTHER: Планирование совместного использования времени в Linux по умолчанию SCHED_OTHER может использоваться только со статическим приоритетом 0. SCHED_OTHER - это стандартный планировщик совместного использования времени в Linux, который предназначен для всех потоков, не требующих специальных механизмов реального времени. Поток для выполнения выбирается из списка статических приоритетов 0 на основе динамического приоритета, который определяется только внутри этого списка. Динамический приоритет основан на значении nice (устанавливается параметрами nice(2), setpriority(2) или sched_setattr(2)) и увеличивается каждый раз, когда квант готов к выполнению потока, но запрещен для запуска планировщиком. Это обеспечивает честный прогресс среди всех потоков SCHED_OTHER.

Таким образом, на динамический приоритет потоков влияет вызов setpriority, и он должен вызывать изменения в планировании (в зависимости от нового значения приоритета, устанавливаемого в вызове).

Вы также можете уменьшить динамический приоритет, используя nice().

Попробуй красиво (9).

    #include <unistd.h>
    int nice(int inc);  // inc = increase, added to the current nice value
Другие вопросы по тегам