Linux进程调度策略有哪几种,Red Hat Enterprise Linux 8的9种实时进程调度策略

RHEL 8使用是Linux内核版本是Kernel 4.18,其系统进程的实时调度策略有9种,查看ps的帮助手册即可查到:

# man ps |grep -A 10 policy

- not reported

TS SCHED_OTHER

FF SCHED_FIFO

RR SCHED_RR

B SCHED_BATCH

ISO SCHED_ISO

IDL SCHED_IDLE

DLN SCHED_DEADLINE

? unknown value

实际上只有7种,not reported、unknown value可能只是开放的策略,允许用户自定义。查看进程时,可能专门指定查看进程的调度策略,如下:

# ps axo pid,comm,nice,cls --sort=-nice

Linux的进程调度意味着,它是CPU的重要助手,总是要为CPU挑选出下一个要执行的进程。在Linux,进程(process)、线程(thread)和任务(task)都差不多。根据POSIX的定义,进程相当于执行一个程序,特指执行程序时需要的名字空间、内存等资源;而线程则是指执行一行代码时需要的系统资源。即它们关注的对象不同。大家都应该知道,一个程序有很多行代码,几千行,几万行也不稀奇。

挑选进程的标准有两个:

一、调度策略(scheduling policy)

二、静态调度优先度(static scheduling priority)

看来,调度政策挺重要。那么,各种调度策略是什么意思呢?

TS - SCHED_OTHER

优先度为100-139的进程平民中实行普通的轮巡。优先度的范围是0-139。根据本文作者的划分标准,优先度为1-99的进程是“贵族进程”或“进程贵族”,优先度为100-139的,是“平民进程”或“进程平民”。这TS代表的,正是进程平民之间的轮巡。0则被征用了,表示不使用优先度(注2)。

FF - SCHED_FIFO

正如其名所示,FIFO,First In, First Out,先进先出。它比较霸道,执行完才肯走。这是进程中的土匪。

RR - SCHED_RR

轮巡,在分配到的、可以使用CPU的时间片里,相同优先度(0-99)的进程们,你一下,我一下,轮流吃肉。RR,Round Robin。这种机制,跟SCHED_OTHER,或TS类似,但有所不同。这是进程中的贵族们的轮巡。

B - SCHED_BATCH

ISO - SCHED_ISO

IDL - SCHED_IDLE

DLN - SCHED_DEADLINE

这是Linux Kernel 3.14之后新增加的调度机制。同时也被认为是最好的调度方案(注3)。谁的死期先到,谁就先上。这是一种急他人之所急的好作风。不过,这个“死期”是Deadline,是执行任务的“最后期限”。所以,这是进程中的君子之间的约定。

参考资料:

1、https://access.redhat.com/articles/3078

2、http://man7.org/linux/man-pages/man7/sched.7.html

3、https://stackoverflow.com/questions/9392415/linux-sched-other-sched-fifo-and-sched-rr-differences

4、https://lwn.net/Articles/723248/

5、https://www.kernel.org/doc/html/v5.4/scheduler/sched-rt-group.html

6、https://www.cs.montana.edu/~chandrima.sarkar/AdvancedOS/CSCI560_Proj_main/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值