vruntime是每线程;它是嵌套在task_struct中的成员.

本质上,vruntime是线程“运行时”的度量 – 它在处理器上花费的时间. CFS的重点是对所有人公平;因此,算法可归结为一个简单的事情:(在给定的队列中的任务中)具有最低vruntime的任务是最值得运行的任务,因此将其选为“下一个”. (实际的实现是使用rbtree来提高效率).

考虑到各种因素 – 如优先级,漂亮的值,cgroups等 – vruntime的计算并不像简单的增量那样简单.我建议阅读“Professional Linux Kernel Architecture”, Mauerer, Wrox Press中的相关部分 – 它会详细解释.

Pl见下面快速尝试总结其中的一些内容.

快速摘要 – vruntime计算:

(根据这本书)

>大部分工作都在kernel / sched_fair.c中完成:__ update_curr()

>打电话给计时器打勾

>更新刚刚在处理器上花费的“当前”的物理和虚拟时间

>对于以默认优先级运行的任务,即nice值0,所花费的物理和虚拟时间是相同的

>对于其他优先(好)级别的任务,情况并非如此;因此,vruntime的计算受到使用负载权重因子的当前优先级的影响

delta_exec =(unsigned long)(现在 – curr-> exec_start);

// …

delta_exec_weighted = calc_delta_fair(delta_exec,curr);

curr-> vruntime = delta_exec_weighted;

忽略一些舍入和溢出检查,calc_delta_fair的作用是什么

计算以下公式给出的值:

delta_exec_weighed = delta_exec * (NICE_0_LOAD / curr->load.weight)

问题是,更重要的任务(具有较低值的那些)将具有更大的任务权重;因此,通过上述等式,对它们的vruntime将会更小(因此让他们在rbtree上更多地排在左边!).

linux 标准vruntime,linux – CFS中vruntime的概念是什么相关推荐

  1. Linux CFS中的进程调度

    使用优先级映射时间片的劣势 在Linux中用nice值代表优先级,它的范围是-20~19.nice值越低,优先级越高. 在Linux之前,Unix中就是使用nice值映射时间片的方式来进行调度.比如, ...

  2. linux标准分发版的描述信息,如何查看Linux中系统版本信息

    使用Linux 系统是由时候需要查看当前Linux系统的版本便于进行一些设置或者操作,那么如何在Linux系统中使用命令查看Linux发行版版本信息呢? 在本教程中,我们将向您展示如何使用命令行检查系 ...

  3. Linux调度器及CFS调度器

    Linux调度器及CFS调度器 调度器 调度器类sched_class结构体 进程的优先级 调度策略 CFS调度器 实际运行时间 虚拟运行时间 调度器结构分析 调度器 ​ 调度:就算按照某种调度的算法 ...

  4. [Linux][内核学习笔记]--CFS调度器

    文章目录 1. 进程的状态转换 2. 内核调度器的发展 3. 调度策略 4. 与调度相关的系统调用 5. 优先级 6. CFS调度器的实现 6.1 相关结构体 6.1.1 sched_entity 结 ...

  5. linux闲话FHS标准下linux目录结构

    2019独角兽企业重金招聘Python工程师标准>>> 1.闲话         2011年10月24日收到了秒针的OfferLetter并决定加入之后,就开始认真学习linux.坦 ...

  6. Linux 下的文件管理管理系统中的输出输入

    1.file ##文件的类型查看 2.wc ##文件容量统计 #wc -l                行数 #wc -m              字符数 #wc -w              ...

  7. linux 超时 tcp,Linux中TCP设置syn超时时间

    无论您使用什么语言或客户端库,您都应该能够在网络套接字操作上设置超时,通常将其拆分为连接超时.读取超时和写入超时. 但是,尽管您应该能够使这些超时尽可能小,但连接超时尤其具有任何给定内核的有效最大值. ...

  8. 【Linux】Linux 标准目录结构

    为什么80%的码农都做不了架构师?>>>    初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用的一些核心文件.如操作系统内核.引导程 ...

  9. c linux time微秒_Linux基础知识(Linux系统、Linux中的链表)

    Linux系统简介 Linux系统的结构及特点 Linux系统的结构图如下图所示: 从上图可以看出,Linux是一个典型的宏内核(一体化内核)结构.硬件系统上面时硬件抽象层,在硬件抽象层上面时内核服务 ...

最新文章

  1. 内存卡损坏 linux 修复,Linux系统恢复工具
  2. angular2-baidu-map网站中使用百度地图
  3. docker二进制代码编译
  4. ASIHTTPRequest 常用方法讲解
  5. vba php,VBA
  6. esxi 修改服务器配置失败,R720服务器安装 ESXI 5.5update1后出现XXX错误
  7. 中国数字血压计市场趋势报告、技术动态创新及市场预测
  8. linux移动文件 rf参数_linux下文件的复制、移动与删除
  9. volatile指令重排_volatile可见性和指令重排
  10. 无法启动调试--未安装 Silverlight Developer 运行时。请安装一个匹配版本
  11. 数据结构(一):并查集
  12. android studio 融云SDK集成
  13. java怎么画八卦图_八卦图怎么画 最正确的八卦图
  14. 【刷题篇】鹅厂文化衫问题
  15. tar,bz2,bzip等格式解压缩命令汇总
  16. 谷歌地图(Google Maps)接入基础篇
  17. 转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧
  18. Sort of sort
  19. 云计算之概念——IaaS、SaaS、PaaS、Daas
  20. commander.js基本用法

热门文章

  1. 华为防火墙ftp_常用的FTP两种模式,主动模式和被动模式,一分钟了解下
  2. Spring Cloud基础入门
  3. python dropout_Python slim.dropout方法代码示例
  4. 页面编码过滤器和配置
  5. python函数代码块以什么开头_Python初体验-开篇 代码全析
  6. python安装email模块,python 3.4.0电子邮件包安装:ImportError:没有名为'cStringIO'的模块...
  7. Java判断文件夹是否存在,不存在则新建
  8. Mybatis 查询返回List<String>集合
  9. Android开发笔记(一百五十九)Android7.0的分屏模式
  10. Android开发笔记(五十三)远程接口调用AIDL