Короткий ответ : rt_priority
означает приоритет в реальном времени, а для SCHED_RR
и SCHED_FIFO
он определяет, сколько времени получит процесс.
Длинный ответ
Прежде всего, в Linux реализовано нечто, называемое Realtime Process Scheduling
(SCHED_RR
и SCHED_FIFO
). Процессы, работающие в соответствии с этими политиками, всегда имеют приоритет над другими процессами.
Linux обеспечивает 99 уровней приоритета в реальном времени, пронумерованных от 1 (самый низкий) до 99 (самый высокий).
В ядре, если я правильно помню, «меньшие числа означают лучшие предпочтения» - меньшие p->prio
означают лучшие приоритеты .
Вот как выглядит sched_setscheduler
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param);
А sched_param
struct sched_param {
int sched_priority; /* Scheduling priority */
};
Целое число sched_priority
для политики SCHED_RR
или SCHED_FIFO
означает «приоритет в реальном времени», который, как я предполагаю, равен rt_priority
. Так что ядро правильно делает
- Возьмите максимальный приоритет
- Вычтите приоритет реального времени из этого значения. Чем больше приоритет (чем больше он вычитается), тем лучше обработка планировщиком.