在学习了Linux的完全公平调度算法(CFS)后,记录下学习轨迹,这篇文章主要讲述,完全公平调度算法的工作方式,和一些调度知识

我们可以通过ps -l看到当前正在运行的进程的详细信息其中

F:表示进程旗标,标识进程所拥有的权限,当我切换到root的时候为4表示拥有root权限,为1仅有fork()权限

R:表示进程当前的状态

R:当前正在运行(RUNNING)

S:睡眠(SLEEP)

D:不可中断

T:停止(STOP)

Z:僵尸进程(ZOMBIE)

UID:拥有该进程用户的用户ID

PID:进程号

PPID:该进程父进程的进程好

C:CPU是用百分比

PRI:优先级

NI:nice值

ADDR/SZ/WCHAN:都与内存有关

TTY:登陆者的终端,和远程登陆脱不开干系

TIME:占用CPU时间

CMD:造成此进程的命令

这次讲的重点主要和PRI还有NI有关

我们把主要进程分为两种:1.I/O消耗型进程;2.处理器消耗型进程             当然也有既是I/O消耗型也是处理器消耗型的进程

I/O消耗型进程如字面意思一样,轮到它的时候会把大部分时间消耗在I/O请求和等待I/O上,真正使用CPU的时间很少,处理器消耗性进程会把大部分时间用在使用CPU进行计算之类的,如果给这两种继承分配的时间片长度相等,就会体现出不公平。

同时我们想给处理器消耗型的进程多一些处理器时间,而给I/O消耗性进程少一些处理器时间,于是linux采取的不是简单的时间片调度算法,而是改进的优先级调度算法CFS

Linux系统是抢占式的,什么概念呢,系统当前运行一个进程,但这个时候一个具有更高优先级的进程突然得到某种资源进入了就绪状态,然后他就来到cpu面前一脚踢开正在运行的进程(你奏凯,我先来)就抢夺了与CPU共度的美好时光。。。

CFS直接分配的不是时间片,而是CPU使用比,这个比例会收到nice值得影响,然后你懂,nice值低比重就高,nice高比重就低

Q:Linux使用的CFS调度器,决定抢占时机的就是上面说的CPU使用比,注意!反而CPU使用比低的新进程会立刻投入运行,CPU使用比高的新进程会延迟运行,为什么呢

A:因为CFS的出发点基于一个非常简单的概念:进程调度的效果应如同系统具备一个理想中的完美多任务处理器。在这种系统中每个进程将能获得1/n的处理器时间

就是说每个进程真正使用cpu的时间是一样的,包括I/O消耗型和处理器消耗型,以达到真正的公平,这就解释了刚才的问题,CPU使用比低的占用时间会不可避免的少于占用比高的进程,那我们只好让这个进程具有抢占能力,一就绪就可以抢占,这样子“看起来CPU使用比高了”(其实没变)“看起来CPU占用时间也和其他进程一样多了”(其实不多)

抢占能力高了,交互性相对而言就好了,你看你人打个游戏,交互性就得高,不然你按个键放个技能电脑不给你处理,你就坑队友了

Linux采用的是完全公平调度算法(CFS)

Linux的进程调度并未使用直接均分时间片的方式,而是对优先级进行了改进,采用了两种不同的优先级范围,一种是nice值,范围是-20到+19,越大的nice值意味着更低的优先级,低nice值的进程会获得更多的处理器时间(按比例获得),第二种范围是实时优先级,其值是可配置的,默认情况下它的变化范围是从0到99,与nice值意义相反,越高的实时优先级数值意味着进程优先级越高,任何实时进程的优先级都高于普通进程

PS:nice值还会不断对old优先级进行更改,当然也可以设置nice的值,nice值给负值必须要用root

nice值不是优先级,但会影响优先级 PRI(new)=PRI(old)+nice

时间片过长会导致人机交互欠佳,而时间片过短会导致大量的处理器时间浪费在进程的切换上,而且I/O消耗型进程和处理器消耗型进程之间的处理器时间的不公平之处也显现出来了

CFS并没有直接分配时间片到进程,而是将处理器的使用比划分给了进程,这个比例还会受到nice值的影响

CFS的做法是允许每个进程运行一段时间,循环轮转,选择运行最少的进程作为写一个运行进程,所以根据nice值的含义-占用处理器的百分比,来根据系统中全部可运行进程总数来根据所占比例的“时间片”运行

linux设计总是想分配给N个进程每个进程同样多的处理器运行时间,当N趋于无穷大的时候,按理说是可以分配给无限小的时间周期,但是这么做会很糟糕,我们也无法分配无限小的时间周期,虽然越小的时间周期可以带来更好的交互性,但还是带来不可接受的切换消耗,所以引入了一个目标延迟,来模拟无限小调度周期的近似值,现在假设目标延迟就是20ms,用它除以所有当前可以运行的进程数目就可以得到每个进程获得的时间片长度,当进程数无限大时候,每个进程分配的时间就趋于无限小,很好,进程切换又爆炸了,那么如果把最小值设为为1ms呢,进程数目再多我也保证每个进程在被强占之前获得1ms的运行时间,那么这个1ms就被称为最小粒度

nice值 linux进程,Linux进程优先级和nice值相关推荐

  1. linux进程,Linux进程查看

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源.一般来说,Linux系统会在进程之间共享程序代码和系统 ...

  2. Linux进程管理进程优先级nice

    目录 一.概述 1.简介 二.优先级范围及特性 1.优先级范围 2.优先级的特性 三.查看进程的nice级别 四.启动 具有不同nice级别的进程 1.默认情况 2.手动启动(以sleep为例) 1) ...

  3. qt调用linux 进程,Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u014746574/article/d ...

  4. 9050 端口 linux 进程,Linux中查看某个端口占用情况

    Bridge模式--对象结构型模式 今天看了Bridge模式,对其进行简单的总结,并给出几篇通俗易懂的文章链接. (一)意图--将抽象部分和它的实现部分分离,使它们都可以独立地变化. 适用于从多维度描 ...

  5. Linux 进程必知必会

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 只是简单的描述了一下 Linux 基本概念,通过几个例子来 ...

  6. 睡眠排序算法c语言实现,Linux 进程必知必会

    只是简单的描述了一下 Linux 基本概念,通过几个例子来说明 Linux 基本应用程序,然后以 Linux 基本内核构造来结尾.那么本篇文章我们就深入理解一下 Linux 内核来理解 Linux 的 ...

  7. 一文搞定Linux进程和线程(详细图解)

    Linux 进程和线程 本篇文章我们就深入理解一下 Linux 内核来理解 Linux 的基本概念之进程和线程.系统调用是操作系统本身的接口,它对于创建进程和线程,内存分配,共享文件和 I/O 来说都 ...

  8. linux 的 swapper 进程不能sleep,Linux进程管理与调度.ppt

    Linux进程管理与调度 关于进程与线程Linux进程实现Linux进程调度策略Linux进程调度实现 1Linux进程与线程 Linux进程Linux线程 进程作为资源分配的基本单位而存在 线程作为 ...

  9. Linux 进程及进程之间的通信机制——管道

    参考: LInux C编程从初学到精通 电子工业出版社 Linux 进程 Linux 进程简介 Linux是一个多用户多任务的操作系统,多用户是指多个用户可以在同一时间使用同一台计算机系统:多用户是指 ...

最新文章

  1. 敏捷研发落地之持续集成
  2. Elasticsearch——并发冲突以及解决方案
  3. noip2016前的话[漫谈]
  4. qoq是什么意思的缩写_“yjgj他的pyq很zqsg”,90后从未觉得自己老,直到看到00后缩写的那一秒……...
  5. SAP Netweaver和Hybris Commerce启动后执行的默认操作
  6. python 函数参数注解_python-如何使用函数注释来验证函数调用类...
  7. BZOJ4503 两个串 【fft】
  8. linux强制停止压缩任务,6.25任务(linux压缩、打包命令:zip、tar)
  9. 【新华网】阿里与重庆9所高校合作 加快大数据人才培养
  10. 安装vc6出现couldn't find acme setup的解决办法
  11. 点击谷歌浏览器安装包没有反应
  12. 论文中MathType公式居中,编号右对齐
  13. 利用FPGA制作数字电压表
  14. 不得不服!以商品超卖为例讲解Redis分布式锁
  15. 补天发动 3万多名白帽子找漏洞情报,这次有什么不一样
  16. vue 提交form表单
  17. 联想昭阳k43c-80 BIOS里UEFI是灰色项,改不了为legacy
  18. OL实现属性查询的功能
  19. 阻容感基础05:电容器原理(2)-电容器参数
  20. [Mugeda HTML5技术教程之11]Mugeda API简介

热门文章

  1. 数据治理的陷阱与解决方案
  2. 高效集成连接管理与平台运营 中琛物联赋能智慧城市建设
  3. mac xampp连接mysql_MAC系统XAMPP 中 MySQL命令行client配置使用
  4. express学习 - (3)express 路由
  5. 黑鲨helo支持html吗,黑鲨游戏手机Helo综合评测 到底值不值得买
  6. 安装卡主_吸顶灯怎么安装 吸顶灯安装方法【技巧】
  7. 组件加name属性_从零开始学习React-属性绑定(三)
  8. android刷新时的圆形动画_Android自定义view渐变圆形动画
  9. IntelliJ IDEA设置代码提示(常用快捷键)
  10. 在C#中判断某个类是否实现了某个接口