1870|5

6482

帖子

8

TA的资源

管理员

楼主
 

阅读打卡第八站:进程管理之调度与负载均衡 ——《奔跑吧Linux内核(第2版)卷1》 [复制链接]

>>点此进入阅读打卡总站,查看所有打卡题目

 

阅读小伙伴们,第八站打卡 题目开启:@paope    、@费炜 @lemonboard @chejia12 @maskmoo @硬核王同学 @小默叔叔 @yin_wu_qing @meiyao

预计阅读完《奔跑吧Linux内核(第2版)卷1:基础架构》第八章可解答。

作者笨叔给了的本章打卡题目:

1.请简述进程优先级、nice值和权重之间的关系。
2.请简述CFS是如何工作的。
3.CFS中vruntime是如何计算的?

 

 

 

论坛有开设嵌入式交流群,欢迎感兴趣的小伙伴,微信添加“helloeeworld”为好友,对话:加入嵌入式交流群,入群交流。

扫码,对话:加入嵌入式交流群。

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

最新回复

进程优先级是一个无符号整数,代表该进程在系统任务调度时优先处理顺序。数值越低,优先级越高。而nice值也代表着优先级,具体指普通进程的优先级,即100 - 139。权重则是另一种表示优先级的方式,其配合nice值一起使用,在计算系统依据优先级分配时的一个中间量。 CFS使用权重值来分配进程占用系统时间的长度,通过中间量vruntime虚拟时间作为影响因子调节实现占用时间,其计算方式为查表法。节省计算时间,节约调度时间成本 在CFS中通过calc_delta_fair()函数来计算,计算公式为vruntime = delta_exec * nice_0_weight / weight。   详情 回复 发表于 2024-1-26 23:59
点赞 关注
个人签名微信搜索公众号“EEWORLDBBS”快去添加关注吧!

回复
举报

67

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

1.请简述进程优先级、nice值和权重之间的关系。

进程优先级和Nice值是相对于单个进程而言的;CFS中的权重是相对于所有进程而言的,用于实现公平调度;高Nice值和低权重表示相对较低的优先级,而低Nice值和高权重表示相对较高的优先级。

2.请简述CFS是如何工作的。

CFS是 Linux 内核中的一种调度策略,旨在实现对系统中运行的进程的公平调度。CFS的主要思想是按照进程的权重来分配CPU时间,以实现对进程的相对公平。
3.CFS中vruntime是如何计算的?

vruntime= \left ( \frac{deltaexec*nice0weight*2^{32}}{weight} \right )\gg 32

 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
 
 
 

回复

226

帖子

0

TA的资源

一粒金砂(高级)

4
 
  1. 请简述进程优先级、nice值和权重之间的关系。
    操作系统中经典的进程调度算法是基于优先级调度的。优先级调度的核心思想是把进程按照优先级进行分类,紧急的进程优先级高,不紧急、不重要的进程优先级低。调度器总是从就绪队列中选择优先级高的进程进行调度,而且优先级高的进程分配的时间片会比优先级低的进程长,这体现一种等级制度。Linux系统最早采用nice值来调整进程的优先级。nice值的思想是要对其他进程友好,降低优先级来支持其他进程消耗更多的处理器时间。它的范围是-20 ~ +19,默认值是0。nice值越大,优先级反而越低;nice值越低,优先级越高。nice值-20表示这个进程是非常重要的,优先级最高;而nice值19则表示允许其他进程比这个线程优先享有宝贵的CPU时间,这也是nice值的由来。内核使用0~139的数值表示进程的优先级,数值越小,优先级越高。优先级0~99给实时进程使用,100~139给普通进程使用。另外,在用户空间中有一个传统的变量nice,它用于映射普通进程的优先级,即100~139。
  2. 请简述CFS是如何工作的。
    CFS调度器抛弃以前固定时间片和固定调度周期的算法,采用进程权重值的比重来量化和计算实际运行时间。引入虚拟时钟的概念,每个进程的虚拟时间是实际运行时间相对nice值为0的权重的比例值。进程按照各自不同的速率比在物理时钟节拍内前进。nice值小的进程,优先级高且权重大,其虚拟时钟比真实时钟跑得慢,但是可以获得比较多的运行时间;反之,nice值大的进程,优先级低,权重也低,其虚拟时钟比真实时钟跑得快,获得比较少的运行时间。CFS调度器总是选择虚拟时钟跑得慢的进程,类似一个多级变速箱,nice值为0的进程是基准齿轮,其他各个进程在不同变速比下相互追赶,从而达到公正公平。
  3. CFSvruntime是如何计算的?
          在CFS中有一个计算虚拟时间的核心函数calc_delta_fair(),它的计算公式vruntime=(delta_exec*nice_0_weight)/weight。其中,delta_exec为实际运行时间,nice_0_weight为nice为0的权重值,weight表示该进程的权重值。在update_curr()函数中,完成了该值的计算,此时,为了计算高效,将计算方式变成了乘法和移位vruntime=        (delta_exec*nice_0_weight*inv_weight)>>shift,其中inv_weight=2^32/weight,是预先计算好存放在prio_to_wmult中的。
阅读打卡第八站.docx (19.73 KB, 下载次数: 0)
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

5
 

1.请简述进程优先级、nice值和权重之间的关系。

答:

  • 进程优先级:内核使用0~139的数值表示进程的优先级,数值越低,优先级越高。优先级0~99给实时进程使用,100~139给普通进程使用。
  • nice:是一个用户空间的传统变量,它映射到普通进程的优先级,即100~139。nice值的范围是-20~19,进程默认的nice值为0。可以理解成有40个等级,nice值越高,优先级越低,反之亦然。
  • 权重:内核使用load_weight数据结构来记录调度实体的权重信息。

具体关系如下:nice值的改变会影响进程的权重,而权重决定了进程在CFS中的调度优先级。如果一个CPU密集型的应用程序的nice值从0增加到1,那么它相对于其他nice值为0的应用程序将减少10%的CPU时间。因此进程每降低一个nice级别,优先级则提高一个级别相应的进程多获得10%的CPU时间,反之少获得10%的CPU时间。较高权重的进程更容易获得CPU时间,从而提高其执行优先级。

2.请简述CFS是如何工作的。

答:

CFS(Completely Fair Scheduler,完全公平调度器)是Linux操作系统中的一种进程调度器。它的主要目标是在多个进程之间公平地分配CPU时间,以提高系统的整体性能和公平性。

CFS的工作原理如下:

  1. CFS将系统中所有的活动进程组织成一个虚拟的红黑树。每个进程都有一个称为"虚拟运行时间"(virtual runtime)的属性,用于衡量进程已经执行的时间量。

  2. 当进程需要执行时,CFS选择该红黑树中虚拟运行时间最小的进程来运行。这保证进程能够按照它们公平的份额获得CPU时间。

  3. 当一个进程开始执行时,CFS会根据进程的优先级动态调整进程的虚拟运行时间。优先级较高的进程会在单位时间内获得更多的虚拟运行时间,从而有更高的执行优先级。

  4. 当一个进程执行完毕或者阻塞时,它会释放CPU并从红黑树中移除。同时,CFS会调整其他进程的虚拟运行时间,以保持公平性。

3.CFS中vruntime是如何计算的?

答: 在CFS中有一个计算虚拟时间的核心函数calc_delta_fair(),它的计算公式vruntime=(delta_exec*nice_0_weight)/weight。其中,vruntime表示进程虚拟的运行时间,delta_exec为实际运行时间,nice_0_weight为nice为0的权重值,weight表示该进程的权重值。

 
 
 

回复

138

帖子

0

TA的资源

一粒金砂(中级)

6
 
  1. 进程优先级是一个无符号整数,代表该进程在系统任务调度时优先处理顺序。数值越低,优先级越高。而nice值也代表着优先级,具体指普通进程的优先级,即100 - 139。权重则是另一种表示优先级的方式,其配合nice值一起使用,在计算系统依据优先级分配时的一个中间量。
  2. CFS使用权重值来分配进程占用系统时间的长度,通过中间量vruntime虚拟时间作为影响因子调节实现占用时间,其计算方式为查表法。节省计算时间,节约调度时间成本
  3. 在CFS中通过calc_delta_fair()函数来计算,计算公式为vruntime = delta_exec * nice_0_weight / weight。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表