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

Red Hat Enterprise Linux 8使用是Linux内核版本是Kernel 4.18,其系统进程的实时调度策略有9种。在RHEL 8中,查看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的定义,进程相当于执行一个程序,特指执行程序时需要的名字空间、内存等资源;而线程则是指执行一行代码时需要的系统资源。即它们关注的对象不同。大家都应该知道,一个程序有很多行代码,几千行,几万行也不稀奇。

RHEL 8挑选进程的标准有两个(注2):

一、调度策略(scheduling policy)

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

既然有静态调度优先度,就有动态调度优先度,也就是NICE值,其取值 范围为-20~19,共40个档次。数值越大,越往后排。看来,调度政策挺重要。那么,各种调度策略是什么意思呢?

TS - SCHED_OTHER

优先度为0的进程中,按照NICE值排队,等候被CPU执行。应用SCHED_OTHER或TS策略的进程在执行过一次之后,其NICE值就会增加一次。在这种策略下,进程们拼的不是静态优先度,拼的是动态优先度,即NICE值。这是Linux的缺省调度策略。

FF - SCHED_FIFO

正如其名所示,FIFO,First In, First Out,先进先出。它比较霸道,执行完才肯走。在这种策略的指导下,静态优先度为1-99之间的进程会插队到执行SCHED_OTHER、SCHED_IDEL、SCHED_BATCH策略的进程前面,直到它执行完毕或者被更高优先组的进程插队。这种策略没有时间片的限制。执行这种策略的进程是进程中的土匪。

RR - SCHED_RR

轮巡,在分配到的、可以使用CPU的时间片里,相同优先度(1-99)的进程们,你一筷子,我一筷子,轮流吃肉。SCHED_RR,是SCHED_FIFO的改进形式。这种机制,可以视为进程土匪中的轮巡。毕竟,在这种策略下,大家还讲点规矩,机会均等。你一筷子没夹着肉,那就等下一轮吧。

B - SCHED_BATCH

跟SCHED_OTHER一样,不使用静态优先度,使用动态优先度。不同的是,它要批量执行进程。所以,只适合非交互式的进程。

ISO - SCHED_ISO

这种策略是想向进程提供类似于SCHED_OTHER的运行时间片分配机制。与后者不同的是,SCHED_ISO在最大限度地保证不会导致其它进程“饿死”的情况下,尽可能地延长进程的执行时间。适用于游戏、视频和视频捕获场景下,最大限度地利用硬件资源。这个策略仍不完善(注8)。

IDL - SCHED_IDLE

跟SCHED_OTHER一样,不使用静态优先度,而且也不大使用动态优先度。进程的优先度为19或20。执行这种策略的进程,是进程中的谦谦君子。它们总是先人后己,与世无争。

DLN - SCHED_DEADLINE

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

RHEL 8的产品文档中,找不到关于SCHED_ISO的介绍,大概也是因为这种调度技术尚未成熟有关吧。

参考资料:

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/

7、https://linux.die.net/man/2/sched_getscheduler

8、https://www.mankier.com/8/schedtool

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

  1. linux as 5 安装,本地硬盘安装Red Hat Enterprise Linux AS 5

    Red Hat Enterprise Linux AS 5是我现在得到的最新的Red Hat企业版. Red Hat 的主页:http://www.redhat.com(有很多版本的Linux下载,英 ...

  2. linux系统snmpd服务内存偏高,Red Hat Enterprise Linux 5.4 64位系统SNMP内存泄漏(上)

    1.SNMP的内存泄漏问题 SNMP的内存泄漏问题,我最早是在CDN的一台负载均衡调度机上看到的.一个snmpd进程,占用的VIRT将近4G.重启snmpd后VIRT降到150M左右,机器为Red H ...

  3. red hat linux 安装oracle10g vm,oracle 10g 在 RED HAT ENTERPRISE LINUX 5下的安装

    oracle 10g 在 RED HAT ENTERPRISE LINUX 5下的安装 ORACLE 10G在LINUX的安装: 先上来两张图: DBA是努力的方向,ORACLE DBA包罗万象,连L ...

  4. Red Hat Enterprise Linux 5安装图解

    Red Hat Enterprise Linux 5安装图解 Linux发展到今天,我个人认为已经是一个很成熟的操作系统.最大的缺陷是支持他的应用比较少.作为一种开源软件,已经不错了.开源精神让我喜欢 ...

  5. Red Hat Enterprise Linux 5安装Oracle10

    Red Hat Enterprise Linux 5安装Oracle10 2009-07-08 18:04 一.安装系统 首先安装Linux系统,根据Oracle官方文档的建议,在机器内存小于1G的情 ...

  6. Red Hat Enterprise Linux 5安装Oracle(10g/11g)

    一.安装系统 首先安装Linux系统,根据Oracle官方文档的建议,在机器内存小于1G的情况下,swap分区大小应该设置为内存的2倍大,若内存大于2G则swap分区设置为与内存大小一样. 其实Lin ...

  7. Red Hat Enterprise Linux 5.1 Server(正式版)各版本下载2011-04-17 22:21

    Red Hat Enterprise Linux 5.1 Server(正式版)各版本下载2011-04-17 22:21 linuxserver虚拟化云计算ibm服务器 Red Hat领导着Linu ...

  8. Red Hat Enterprise Linux Server release 7.1 (Maipo) 安装gcc 的几种方式

    linux中没有默认安装的gcc,折腾了一番,终于搞好,记录备忘. [root@localhost local]# gcc bash: gcc: command not found... 查看系统版本 ...

  9. rhel6上使用udev配置oracle asm,Red Hat Enterprise Linux 6使用udev配置Oracle ASM总结文档

    1.概述 在Red Hat Enterprise Linux (RHEL)6以前,Oracle均是使用ASMLib这个内核支持库配置ASM. ASMLIB是一种基于Linux module,专门为Or ...

最新文章

  1. DeepMind“钓鱼执法”:让AI引诱AI说错话,发现数以万计危险言论
  2. 飞越难关,飞书生态「战疫工具箱」来驰援!
  3. 解决Windows Installer的错误
  4. 黄学东出任微软全球人工智能首席技术官!微软首位华人技术院士全面负责Azure云AI...
  5. c# unchecked关键字。byte 合并short
  6. HTML5的基本入门格式介绍
  7. IPV6迎来商业元年 运营商短期盈利模式成难点
  8. 分析股票大数据_Python大数据分析量学祖师爷网站数据
  9. Android 系统(255)---dump解码所得图片方法
  10. 带负荷测试要求二次最小电流_差动保护带负荷测试
  11. Android配置http请求
  12. CDays-3 习题一 (处理命令行参数)及相关内容解析。Python getopt 简介
  13. 2021年计算机网络常见面试题
  14. 2008年最新姓氏排名
  15. 杰理之AUDIO_DAC【篇】
  16. 猜大小(python)
  17. Oracle 查询的十个小技巧
  18. inetd和xinetd的区别 (ZT)
  19. gr-osmosdr的安装
  20. 33.0 haproxy

热门文章

  1. js 实现倒计时(短信验证码倒计时)
  2. 目前的智能门锁联网 ,普遍存在哪些安全隐患?
  3. Matlab----绘图以及文件储存
  4. 动态规划经典题目——数塔问题
  5. shader 守望先锋的盾牌
  6. 闲聊蓝桥杯JAVA - 填字母游戏
  7. uniCloud开发微信公众号:四、引入/封装redis缓存方法
  8. 哪款键盘最适合写代码?入坑指南!
  9. centos安装chrome的解决方案
  10. 两位数乘法的速算方法(二)