我很难理解setscheduler func中的sched_priority角色。
我使用linux 2.4.X,文档说:
Valid priorities for SCHED_OTHER is 0, Valid priorities for SCHED_RR\FIFO are 1...MAX_USER_RT_PRIO-1
但是,我记得rt procsses的优先级是0-99,而SCHED_OTHER的优先级是100-139,所以...我错过了什么? sched_priority
中的struct sched_param
指的是什么?
答案 0 :(得分:2)
SCHED_OTHER
是带循环的默认计划策略。这是没有优先权的选择。
SCHED_FIFO
和SCHED_RR
是实时调度策略,优先级范围为1到99.
SCHED_OTHER
,SCHED_BATCH
和SCHED_IDLE
是正常的调度策略。
从Linux 3.14开始,您会发现SCHED_DEADLINE
首先执行具有最早截止日期的任务。
您可以使用sched_priority
设置线程优先级。 sched_priority是结构struct sched_param
的成员。
尝试chrt -m
检查可配置/设置的最小/最大有效优先级。 chrt
可用于设置或检索进程的调度属性。
答案 1 :(得分:0)
您将用户空间接口与内部内核实现混淆。 sched_priority只是请求的固定实时优先级。 在SCHED_OTHER策略下安排的任务也有一个很好的水平。
您记住的比例是任务相对优先级的内核表示,将实时任务和SCHED_OTHER任务与各自的优秀级别聚合在一起。