安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

Linux内核进程调度器CPU负载

2月2日 眉梢欢投稿
  目录
  背景概述全局CPU平均负载
  2。1基础概念
  2。2流程
  2。3计算方法运行队列CPU负载PELT
  4。1PELT计算方法
  4。2PELT计算调用背景Readthefuckingsourcecode!By鲁迅Apictureisworthathousandwords。By高尔基
  说明:Kernel版本:4。14ARM64处理器,ContexA53,双核使用工具:SourceInsight3。5,Visio1。概述
  CPU负载(cpuload)指的是某个时间点进程对系统产生的压力。来张图来类比下(参考UnderstandingLinuxCPULoad)
  CPU的运行能力,就如大桥的通行能力,分别有满负荷,非满负荷,超负荷等状态,这几种状态对应不同的cpuload值;单CPU满负荷运行时cpuload为1,当多个CPU或多核时,相当于大桥有多个车道,满负荷运行时cpuload值为CPU数或多核数;CPU负载的计算(以单CPU为例),假设一分钟内执行10个任务代表满负荷,当一分钟给出30个任务时,CPU只能处理10个,剩余20个不能处理,cpuload3;
  在实际系统中查看:catproccpuinfo:查看CPU信息;catprocloadavg:查看cpu最近1515分钟的平均负载:
  计算CPU负载,可以让调度器更好的进行负载均衡处理,以便提高系统的运行效率。
  此外,内核中的其他子系统也可以参考这些CPU负载值来进行相应的调整,比如DVFS等。
  目前内核中,有以下几种方式来跟踪CPU负载:全局CPU平均负载;运行队列CPU负载;PELT(perentityloadtracking);
  这也是本文需要探讨的内容,开始吧。
  需要的小伙伴私信回复内核免费领取2。全局CPU平均负载2。1基础概念
  先来明确两个与CPU负载计算相关的概念
  (1)activetask(活动任务):只有知道活动任务数量,才能计算CPU负载,而活动任务包括了TASKRUNNING和TASKUNINTERRUPTIBLE两类任务。包含TASKUNINTERRUPTIBLE任务的原因是,这类任务经常是在等待IO请求,将其包含在内也合理;
  (2)NOHZ:我们都知道Linux内核每隔固定时间发出timerinterrupt,而HZ是用来定义1秒中的timerinterrupts次数,HZ的倒数是tick,是系统的节拍器,每个tick会处理包括调度器、时间管理、定时器等事务。周期性的时钟中断带来的问题是,不管CPU空闲或繁忙都会触发,会带来额外的系统损耗,因此引入了NOHZ模式,可以在CPU空闲时将周期性时钟关掉。在NOHZ期间,活动任务数量的改变也需要考虑,而它的计算不如周期性时钟模式下直观。2。2流程
  Linux内核中定义了三个全局变量值avenrun〔3〕,用于存放最近1515分钟的平均CPU负载。
  看一下计算流程:
  计算活动任务数,这个包括两部分:1)周期性调度中新增加的活动任务;2)在NOHZ期间增加的活动任务数;根据活动任务数值,再结合全局变量值avenrun〔〕中的oldvalue,来计算新的CPU负载值,并最终替换掉avenrun〔〕中的值;系统默认每隔5秒钟会计算一次负载,如果由于NOHZ空闲而错过了下一个CPU负载的计算周期,则需要再次进行更新。比如NOHZ空闲20秒而无法更新CPU负载,前5秒负载已经更新,需要计算剩余的3个计算周期的负载来继续更新;2。3计算方法
  Linux内核中,采用11位精度的定点化计算,CPU负载1。0由整数2048表示,宏定义如下:defineFSHIFT11nrofbitsofprecisiondefineFIXED1(1FSHIFT)1。0asfixedpointdefineLOADFREQ(5HZ1)5secintervalsdefineEXP118841exp(5sec1min)asfixedpointdefineEXP520141exp(5sec5min)defineEXP1520371exp(5sec15min)
  计算公式如下:
  load值为旧的CPU负载值avenrun〔〕,整个计算完成后得到新的负载值,再更新avenrun〔〕;EXP1EXP5EXP15,分别代表最近1515分钟的定点化值的指数因子;active值,根据读取calcloadtasks的值来判断,大于0则乘以FIXED1(2048)传入;根据active和load值的大小关系来决定是否需要加1,类似于四舍五入的机制;
  关键代码如下:activeatomiclongread(calcloadtasks);activeactive0?activeFIXED1:0;avenrun〔0〕calcload(avenrun〔0〕,EXP1,active);avenrun〔1〕calcload(avenrun〔1〕,EXP5,active);avenrun〔2〕calcload(avenrun〔2〕,EXP15,active);NOHZ模式下活动任务数量更改的计算由于NOHZ空闲效应而更改的CPU活动任务数量,存放在全局变量calcloadnohz〔2〕中,并且每5秒计算周期交替更换一次存储位置(calcloadreadidxcalcloadwriteidx),其他程序可以去读取最近5秒内的活动任务变化的增量值。
  计算示例假设在某个CPU上,开始计算时load0。5,根据calcloadtasks值获取不同的active,中间进入NOHZ模式空闲了20秒,整个计算的值如下图:
  3。运行队列CPU负载Linux系统会计算每个tick的平均CPU负载,并将其存储在运行队列中rqcpuload〔5〕,用于负载均衡;
  下图显示了计算运行队列的CPU负载的处理流程:
  最终通过cpuloadupdate来计算,逻辑如下:
  其中传入的thisload值,为运行队列现有的平均负载值。
  上图中的衰减因子,是在NOHZ模式下去进行计算的。在没有使用tick时,从预先计算的表中计算负载值。Linux内核中定义了两个全局变量:defineDEGRADESHIFT7staticconstu8degradezeroticks〔CPULOADIDXMAX〕{0,8,32,64,128};staticconstu8degradefactor〔CPULOADIDXMAX〕〔DEGRADESHIFT1〕{{0,0,0,0,0,0,0,0},{64,32,8,0,0,0,0,0},{96,72,40,12,1,0,0,0},{112,98,75,43,15,1,0,0},{120,112,98,76,45,16,2,0}};
  衰减因子的计算主要是在delayloadmissed()函数中完成,该函数会返回load衰减因子的值,作为上图中的oldload。计算方式如下:
  4。PELT
  PELT,Perentityloadtracking。在Linux引入PELT之前,CFS调度器在计算CPU负载时,通过跟踪每个运行队列上的负载来计算;在引入PELT之后,通过跟踪每个调度实体的负载贡献来计算。(其中,调度实体:指task或taskgroup)4。1PELT计算方法
  总体的计算思路:将调度实体的可运行状态时间(正在运行等待CPU调度运行),按1024us划分成不同的周期,计算每个周期内该调度实体对系统负载的贡献,最后完成累加。其中,每个计算周期,随着时间的推移,需要乘以衰减因子y进行一次衰减操作。
  先来看一下每个调度实体的负载贡献计算公式:
  当前时间点的负载贡献当前时间点负载上个周期负载贡献衰减因子;假设一个调度实体被调度运行,运行时间段可以分成三个段d1d2d3,这三个段是被1024us的计算周期分割而成,periodcontrib是调度实体lastupdatetime时在计算周期间的贡献值,;总体的贡献值,也是根据d1d2d3来分段计算,最终相加即可;y为衰减因子,每隔1024us就乘以y来衰减一次;
  计算的调用流程如下图:
  函数主要是计算时间差,再分成d1d2d3来分段计算处理,最终更新相应的字段;decayload函数要计算valyn,内核提供了一张表来避免浮点运算,值存储在runnableavgyNinv数组中;staticconstu32runnableavgyNinv〔〕{0xffffffff,0xfa83b2da,0xf5257d14,0xefe4b99a,0xeac0c6e6,0xe5b906e6,0xe0ccdeeb,0xdbfbb796,0xd744fcc9,0xd2a81d91,0xce248c14,0xc9b9bd85,0xc5672a10,0xc12c4cc9,0xbd08a39e,0xb8fbaf46,0xb504f333,0xb123f581,0xad583ee9,0xa9a15ab4,0xa5fed6a9,0xa2704302,0x9ef5325f,0x9b8d39b9,0x9837f050,0x94f4efa8,0x91c3d373,0x8ea4398a,0x8b95c1e3,0x88980e80,0x85aac367,0x82cd8698,};
  Linux中使用structschedavg来记录调度实体和CFS运行队列的负载信息,因此structschedentity和structcfsrq结构体中,都包含了structschedavg,字段介绍如下:structschedavg{u64上一次负载更新的时间,主要用于计算时间差;u64可运行时间带来的负载贡献总和,包括等待调度时间和正在运行时间;u32正在运行时间带来的负载贡献总和;u32上一次负载更新时,对1024求余的值;可运行时间的平均负载贡献;正在运行时间的平均负载贡献;};4。2PELT计算调用
  PELT计算的发生时机如下图所示:
  调度实体的相关操作,包括入列出列操作,都会进行负载贡献的计算;
  PELT的算法还在持续的改进中,各个内核版本也存在差异,大体的思路已经在上文中介绍到了,细节就不再深入分析了。
投诉 评论 转载

24年八一队生涯,军衔少校,安置体育局的莫科级别年薪如何?莫科,中国男篮昔日最好的球员之一,当年中国男篮的颜值担当,当年莫科因为有一张不输给偶像的高颜值,也是受到了很多球迷的喜欢,拥有英俊的脸庞却不花心,莫科和八一女篮球员王凡的爱情故……婴儿受惊吓拉绿便便怎么治婴儿出生以后就需要及时的观察婴儿身体健康状况,有一些婴儿刚刚出生不久,身体状况并不算很好,可能因为缺乏一些营养元素造成大便偏绿色,这样情况很可能是一些疾病引起的,婴儿出现这样的……2022年12月7日(午间)鸡蛋价格最新报价行情2022年12月7日(午间)鸡蛋价格最新报价行情2022年12月7日河北馆陶金凤琪强蛋业精品菜花黄(粉蛋)价格45斤240元44斤239元4……3款大跳水的手机,最高直降2100元,看看哪一款适合你年末正是换手机的好时候,这3款大跳水的手机,最高直降2100,看看哪一款适合你。第一款:三星S22三星S22首发价4999,直接跳水1600,来到3399的位置。……57岁索菲王妃穿印花连衣裙亮相,浓浓夏日风,鞋子的配色亮了关注我,看王室八卦!英女王伊丽莎白二世的登基70周年白金禧年庆典落下帷幕,英国王室的各位成员又回到了生活的正轨上,开始出席各自的王室工作活动。索菲王妃是英国王室的三……联想ThinkPhone渲染图参数规格曝光此前的一份爆料中提到,除了目前大家熟悉的拯救者游戏手机和摩托罗拉品牌产品外,联想似乎还有望带来另外一个手机系列,即联想ThinkPhone。按照爆料中提到的说法,即将到来……阿根廷夺冠之路首战不敌沙特,此后连赢六场夺冠!直播吧12月19日讯2022卡塔尔世界杯决赛,阿根廷战胜法国夺冠,这是阿根廷历史第三次夺得世界杯冠军。本届世界杯,小组赛阿根廷首战不敌沙特,随后连胜墨西哥、波兰以C组头名……外媒研究发现美国极端寒冷天气与北极变暖有关据《印度快报》网站报道,随着一场致命的暴风雪席卷美国,截至27日已有60多人死亡。根据《华盛顿邮报》的一篇报道,最近发表在《科学》杂志网站上的一项研究揭示了北极快速变暖如何使该……南京红山动物园门票价格将迎来12年来首调现代快报讯(记者冯茜龙秋利文摄)近年来,因不断创新管理运营模式的南京红山森林动物园成了网红。近日,已执行12年的40元每人次门票价格即将迎来首次调整。2022年12月29日,南……Linux内核进程调度器CPU负载目录背景概述全局CPU平均负载2。1基础概念2。2流程2。3计算方法运行队列CPU负载PELT4。1PELT计算方法4。2PELT计算调用背……澳门最热门国家宣布对新冠病毒实施乙类乙管携程数据显示内地出境目的地搜索量激增澳门成为搜索量增长最快目的地有旅游业者认为新春外游团料较疫前增三成国家卫健……华为Mate50首销战绩惊人,全能产品力加超多黑科技,拼手速9月21日,期待已久的华为Mate50系列迎来首销此前数百万的预约量和大排长龙的实体门店,已经注定了这款手机会大卖。而在官方数据出来之后,很多人也的确被这款时隔两年的高端力作再……
8月10日热点信息个股公告LuongThuyLinh追随放松时尚华为Mate50工程真机曝光可变光圈镜头重出江湖,会上六叶专年轻女星马心瑞分享秋天美照,身穿抹胸吊带裙,洋溢着青春的气息穷游女名声如此不好,为何还有司机愿意搭载?老司机她们会做人吃了一辈子,可能吃错了戚薇怀二胎近照,挺大肚打扮精致带lucky逛街,冷白皮白到发历届冬奥会举办城市及时间为什么需要安装净水器?文字聊天小能手回忆阿尔卡特OT800手机网坛最新排名出炉中国新一哥诞生!张帅距世界第1仅差10分实测格力新品空调组合,制冷速度不如美的海尔,省电效果却极好马桶圈怎么清洗黎族造句用黎族造句大全都美竹采访声称有证据,青簪行最无辜,吴亦凡恐遭影视圈抵制盘点上班族十大习惯最伤胃十大长寿秘方是什么iPhoneXR安兔兔跑分现身3GB内存总分342970初二作文900字等待冬雪回来国乒24小时4件大事,让刘国梁头大!先喜后忧难办,2大天才惹口语交际教案剖宫产后白带增多正常吗亚麻绿发色在家怎么染亚麻绿发色在家染发diy84年贺子珍临终前,提出欲安葬于北京,邓小平得知后连下两道命

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利