Влияет ли использование setpriority() на мою политику планирования SCHED_OTHER?
Моя политика планирования - SCHED_OTHER. Будет ли изменение в хорошем значении с помощью setpriority() иметь какое-либо влияние. Когда я использовал это, я не вижу никакой разницы.
2 ответа
Извините, но внимательно читаю 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