当前位置: 首页 > 面试题库 >

CFS中vruntime的概念是什么

桓深
2023-03-14
问题内容

我一直在阅读有关内核中的Linux内核和CFS调度程序的信息。我遇到了 vruntime (虚拟运行时),这是CFS调度程序背后的核心概念。我从“
Linux Kernel Development ”以及互联网上的其他博客中读到,但无法理解 vruntime 背后的基本计算。是否
vruntime 属于特定进程或做它属于一组进程具有相同的 nice值 。什么是 加权因子
,如何计算?我经历了所有这些概念,但听不懂。此外之间有什么区别 vruntime min_vruntime


问题答案:

vruntime是按线程的;它是嵌套在task_struct中的成员。

本质上,vruntime是线程“运行时”的度量,即线程在处理器上花费的时间。粮安委的重点是对所有人公平。因此,这种算法归结为一个简单的事情:(在给定运行队列中的任务中)具有最低vruntime的任务是最值得运行的任务,因此将其选择为“
next”。(为了提高效率,实际使用rbtree完成了实现)。

考虑到各种因素(例如优先级,可取值,cgroup等),vruntime的计算不像简单的增量那样简单。我建议阅读Wrox Press的Mauerer的“Professional Linux KernelArchitecture”中的相关部分-对其进行了详细说明。

请在下面快速总结一下其中的一些内容。

其他资源: Documentation / scheduler / sched-design-
CFS.txt

快速摘要-vruntime计算:( 基于本书)

  • 大多数工作在kernel / sched_fair.c:__ update_curr()中完成

  • 调用计时器滴答

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

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

  • 对于其他优先级(不错)的任务则不是这样;因此,使用负载权重因子,vruntime的计算会受到电流优先级的影响

delta_exec =(无符号长)(现在– 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上的左侧排队更多!)。



 类似资料:
  • 概述:提供Istio的概念介绍,包括其解决的问题和宏观架构。 设计目标:描述了Istio设计时坚持的核心原则。

  • 问题内容: Java泛型中的擦除概念是什么? 问题答案: 基本上,这是通过编译器技巧在Java中实现泛型的方式。编译后的通用代码实际上只使用你谈论的任何地方(或其他一些类型参数),并且有一些元数据告诉编译器它确实是通用类型。 当你针对通用类型或方法编译某些代码时,编译器会弄清你的实际意思(即,类型参数的含义T),并在编译时验证你做对了事情,但是发出的代码再次在讨论就-编译器在必要时生成额外的强制类

  • 问题内容: 我试图理解模型上的“胖”与控制器上的“瘦”的概念,根据我一直在讨论的内容,我有以下示例(取自freenode的讨论): 问:在MVC范例中,其所说的Fat模型是瘦控制器。我在这里思考的是,如果我有很多方法(在控制器上)仅对CRUD使用了一些抽象方法(在模型上),那么我是在创建胖控制器而不是模型吗?还是他们说,胖模子,退回了什么却没有输入?这是我从未理解过的东西=)任何评论表示赞赏!非常

  • 英文原文:http://emberjs.com/guides/concepts/core-concepts/ 要开始学习Ember.js,首先要了解一些核心概念。 Ember.js的设计目标是能帮助广大开发者构建能与本地应用相颦美的大型Web应用。要实现这个目标需要新的工具和新的概念。我们花了很大的功夫从Cocoa、Smalltalk等本地应用框架引入了其优秀的理念。 然而,记住Web的特殊性非常

  • 我查看了Flyway示例和文档,并试图了解它在我的环境中是否有用。我不清楚以下概念细节:Flyway如何管理数据库版本之间的更改?它显然不比较数据库生命实例(请参阅此处的答案:Flyway可以从datamodel中找到并生成迁移文件吗?) 具体来说,我的设置如下所示:我在编码时创建SQL创建和插入脚本(自动和手动)。这意味着我的数据库的每个版本都由许多insert/create语句表示。在我的世界

  • 一 Hadoop的构建模块 NameNode(名字节点) DataNode(数据节点) Secondary NameNode(次名字节点) JobTracker(作业跟踪节点) TaskTracker(任务跟踪节点) 1.HDFS系统的文件特征 存储极大数目的信息(terabytes or petabytes),将数据保存到大量的节点当中。支持很大单个文件。 提供数据的高可靠性,单个或者多个节点不