我一直在学习一些调度概念。目前,到目前为止,我的理解如下。
- 有实时过程和非实时过程。
- 非实时进程
nice
的优先级值可以在-20到+20之间。正值越高,表示该进程的优先级越低。 - 实时进程将列为正派值
-
作为这个答案说明这里。这主要是因为实时过程比非实时过程具有更高的优先级,并且niceness值不适用于它们。 - 现在,我可以
chrt
用来查看流程的实时属性。
对于实时过程,chrt
给出的输出为
chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99
正如我们在流程5中看到的那样,优先级是最高的99。另外,调度策略是SCHED_FIFO
现在,对于非实时过程,chrt
给出的输出为
chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0
如我们对于进程22383所看到的,优先级为0,调度策略为SCHED_OTHER
。
问题
- 我可以将任何过程都设为实时过程吗?
- 除了
SCHED_OTHER
非实时过程外,我是否可以设置其他调度算法? 从这里,我还看到我可以修改正在运行的进程的属性,因为,
chrt -p prio pid
另外,我看到
chrt -m
了调度算法列表。该命令将输出显示为SCHED_OTHER min/max priority : 0/0 SCHED_FIFO min/max priority : 1/99 SCHED_RR min/max priority : 1/99 SCHED_BATCH min/max priority : 0/0 SCHED_IDLE min/max priority : 0/0
现在,如上所述,如果我设置
chrt -p 55 22383
将使用哪种算法?