linux PELT算法中的load计算

news2025/2/24 21:03:17

滑窗平均的累加计算

权重y按滑窗距离衰减,y^32 = 0.5,也就是经历32个周期将衰减一半的权重,假设本周期值是V,本周期的加权累加值为Vx,则:

一个完整周期是T,给一个基础值1024

T = 1024 \\ V_x =T*V×\left \{\frac{(p_1-p_0)}{T}y^{p_3-p_1}+1\sum_{n=1}^{\frac{T}{p_2-p_1}} y^n + (\frac{p_3-p_2}{T})y^{p_1-p_1}\right \} \\ V_{sum}=V_0+V_x \\ V_{avg} = \frac{V_{sum}}{T\times[\sum_{n=0}^{\infty}y^n + ({p3-p2})]}

其中

\sum_{0}^{\infty }y^n = \frac{1-y^{\infty}}{1-y}= \frac{1}{1-0.5^\frac{1}{32} } =46 \\ \sum_{1}^{p2-p1} y^n= \sum_{0}^{\infty}y^n-\sum_{p2-p1}^{\infty}y^n-y^0

Group entity share 的计算

一个entity 的share值指它在计算runqueue上的load时(load_avg)赋予的权重,这个权重用它所在的group的对应cpu上分得的share值来表示(group 在每个cpu上都有一个runqueue,cpu上分得的share用runqueue的share来表示)

runqueue 的 load weight计算,用avg更合适,因为它比实时的weight更稳定,但由于avg的启动比较慢,在极端的场景要保证与用weight来表示的权重一致。例如组内cpu全idle突然启动一个task的场景,这相当于一个只有一个cpu的场景,需要让avg得到的值和单cpu时的值一致,即:

\frac{Share*W_{avg(rq)}}{\sum W_{avg(rq)}} \rightarrow \frac{Share*W_{rq}}{\sum W_{rq}}

于是用一个近似的形式来拟合:

 \frac{Share*W_{rq}}{\sum W_{avg(rq)}-W_{avg(rq)}+W_{rq}}

考虑到Wrq=0时可能有除0问题,分母变为

\sum W_{avg(rq)}-W_{avg(rq)}+max(W_{avg(rq)},W_{rq})

Entity 与 runqueue 在 load 计算上的区别

block 的 entity 虽然不在 cpu 的 runqueue 上了,但依然在 cfs runqueue 上,只是 load 会以 0 的值对窗口加权。sleep 时间久了,entity 对应的 load avg 会越来越小。

entity 有两种:task,group

task

load sum: 是 runnable 的时间加权和

load avg: 是 load sum × 瞬时权值/ 所有时间窗口加权值

所有时间窗口加权值即前面提过的:

{\sum_{n=0}^{\infty}y^n + (p3-p2)}

task blocking 时,瞬时值是 0, running 时瞬时值由 nice 值决定,瞬时值与 nice 值关系如下:

const int sched_prio_to_weight[40] = {
 /* -20 */     88761,     71755,     56483,     46273,     36291,
 /* -15 */     29154,     23254,     18705,     14949,     11916,
 /* -10 */      9548,      7620,      6100,      4904,      3906,
 /*  -5 */      3121,      2501,      1991,      1586,      1277,
 /*   0 */      1024,       820,       655,       526,       423,
 /*   5 */       335,       272,       215,       172,       137,
 /*  10 */       110,        87,        70,        56,        45,
 /*  15 */        36,        29,        23,        18,        15,
};

group entity

一个 group entity 对应一个 group 中某个 cpu 上的 run queue

load sum : 有一个任务在 running 状态的时间加权和

load avg : entity对应cfs runqueue分到的share值 * load_sum / 所有时间窗口加权值

cfs runqueue分到的share值是上面提到的:

\frac{Share*W_{rq}}{\sum_{rq.in.group} W_{avg(rq)}-W_{avg(rq)}+max(W_{avg(rq)},W_{rq})}

runqueue

load sum:runqueue 中每个 entity 的 load sum * entity 的权重的和

load avg:runqueue 中每个 entity 的 load avg 的和(load avg 已经被加权过了,不用再重新加权)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1148759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【技能树笔记】网络篇——练习题解析(十)

【技能树笔记】网络篇系列前九篇 【技能树笔记】网络篇——练习题解析(一)-CSDN博客 【技能树笔记】网络篇——练习题解析(二)-CSDN博客 【技能树笔记】网络篇——练习题解析(三)-CSDN博客 【技能树笔记】网…

大数据Flink(一百零五):SQL性能调优

文章目录 SQL性能调优 一、 ​​​​​​​MiniBatch 聚合

2023 年值得关注的国外网络安全初创公司

网络安全初创公司试图解决的问题往往有点超前于主流。他们可以比大多数老牌公司更快地填补空白或新兴需求。初创公司通常可以更快地创新,因为它们不受安装基础的限制。 当然,缺点是初创公司往往缺乏资源和成熟度。公司致力于初创公司的产品或平台是有风…

JavaWeb 怎么在servlet向页面输出Html元素?

service()方法里面的方法体&#xff1a; resp.setContentType("text/html;charsetutf-8");//获得输出流PrintWriter对象PrintWriter outresp.getWriter();out.println("<html>");out.println("<head><title>a servlet</title>…

SDL事件处理以及线程使用(2)

事件使用 #include <stdio.h> #include <SDL.h>#define FF_QUIT_EVENT (SDL_USEREVENT 1) // 定义自定义事件#undef main int main() {SDL_Window* pWindow NULL;SDL_Init(SDL_INIT_VIDEO);// 创建窗口pWindow SDL_CreateWindow("Event Test Title&…

DAY38 动态规划 + 509. 斐波那契数 + 70. 爬楼梯 + 746. 使用最小花费爬楼梯

动态规划理论 动态规划&#xff0c;Dynamic Programming&#xff0c; DP&#xff0c; 如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的&#xff0c;这一点就区分于贪心&#xff0c;贪心没有状态推导…

OpenTiny Vue 支持 Vue2.7 啦!

你好&#xff0c;我是 Kagol。 前言 上个月发布了一篇 Vue2 升级 Vue3 的文章。 &#x1f596;少年&#xff0c;该升级 Vue3 了&#xff01; 里面提到使用了 ElementUI 的 Vue2 项目&#xff0c;可以通过 TinyVue 和 gogocode 快速升级到 Vue3 项目。 有朋友评论替换butto…

校园物业报修小程序开发笔记一

背景 校园规模和复杂性&#xff1a; 大型学校和校园通常拥有众多的建筑物、设施和设备&#xff0c;需要有效的维护和报修系统&#xff0c;以满足学生、教职员工和校园管理人员的需求。 学生和员工需求&#xff1a; 学生和员工在校园内可能遇到各种维修问题&#xff0c;如故障的…

精品Python的大学教室资源预约管理系统

《[含文档PPT源码等]精品基于Python的大学教室资源管理系统的设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django 前…

0028Java程序设计-智能农场监控报警系统设计与实现

文章目录 摘要目 录系统设计开发环境 摘要 我国是一个以农业为主的国家&#xff0c;在当今社会信息化迅速发展的背景下&#xff0c;将信息技术与农业相融合是必然的趋势。现代信息技术在农业生产中的运用&#xff0c;主要体现在两个领域&#xff1a;一是传感器技术&#xff1b…

基于SpringBoot和Vue的车辆违章信息查询系统

一、绪论 1.1 研究背景 当前社会交通事故频发&#xff0c;车辆违章现象屡见不鲜。为了解决这一问题&#xff0c;车辆违章信息查询系统应运而生。该系统能够自动检测车辆违章行为并提供相关信息&#xff0c;为交通管理提供了便利。 目前&#xff0c;基于 Java 语言的前后端完…

0030Java程序设计-积分管理系统论文

文章目录 摘  要**目  录**系统实现系统功能需求3.2.1 管理员功能3.2.2 柜员功能 开发环境 摘  要 随着计算机和网络的不断革新&#xff0c;世界已经进入了前所未有的电子时代。作为实用性强、应用范围广泛的会员管理系统也正在被越来越多的各类企业用于消费管理领域。然…

丰富你的场景验证用例

即使对于一个非常简单的IP&#xff0c;我们也无法验证充分&#xff0c;或者说无法证明芯片没有bug。一个验证人员所能够做的就是尽可能地发现更多的bug&#xff0c;增强流片成功的信心。 对于芯片的验证用例&#xff0c;在各个基本分支通路都已经覆盖了之后&#xff0c;还需要考…

Proteus仿真--单个数码管循环显示0-9(仿真文件+程序)

本文主要介绍基于51单片机的单个数码管循环显示0-9&#xff0c;Proteus仿真&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真运行视频 Proteus仿真--单个数码管循环显示0-9&#xff08;仿真文件程序&#xff09; 附完整Proteus仿真资料代码资料 百度网盘链接: ht…

【波形图】在X轴上显示时间和日期

下面的VI截图展示了使用“获取日期/时间&#xff08;秒&#xff09;VI”的不同方法。 然后需要设置一下波形图的属性。 由“获取日期/时间&#xff08;秒&#xff09;&#xff08;Get Date/Time In Seconds&#xff09;”VI创建的时间标识表示自世界时间1904年1月1日星期五12:0…

走近Python爬虫(上):爬虫的作用和技术、获取网页内容、解析网页内容

文章目录 一、绪论爬虫的作用爬虫的技术 二、获取网页—requests模块1.requests模块简单使用2.使用多线程 三、解析网页1.XPath 参考 本文是Python爬虫系列博客的第一篇&#xff0c;内容概览如下&#xff1a; 一、绪论 爬虫的作用 收集数据&#xff1a; 爬虫可用于收集数据&…

roboflow标注检测 / 分割数据集

对比了labelme, makesense.ai和roboflow这3个可以标注数据集的工具之后&#xff0c; 总结一下它们的特点&#xff1a; labelme需要配环境安装&#xff0c;标注的结果是json文件&#xff0c;需要转成所需格式。 makesense.ai不需要下载&#xff0c;在线标注&#xff0c;能用来标…

ENSP L2TP Over IPSec

本文拓扑沿用上一篇文章《ENSP L2TP 配置》,相关配置有差异。 拓扑 准备工作 客户端软件&#xff1a;URL 真机网络可以到达LNS10.100.1.254 防火墙上接口划分到相应安全区域&#xff0c;安全策略全开&#xff08;本文只是测试&#xff0c;现网中根据自己网络情况严格设置安…

Python selenium驱动下载,模块安装以及基本使用

视频版教程&#xff1a;一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 我们以谷歌浏览器为例讲解。首先我们要去下载谷歌浏览器驱动。 谷歌浏览器驱动下载地址&#xff1a;Chromium History Versions Download ↓ 查看谷歌浏览器版本 右上角三个点 …

SpringCloud之Eureka的学习【详细】

目录 服务架构演变 单体架构 分布式架构 分布式架构需要考虑的问题 微服务 架构比较 微服务技术对比 服务拆分注意事项 案例 服务远程调用 RestTemplate Eureka注册中心 RestTemplate存在的问题 服务调用考虑的问题 Eureka的作用 搭建EurekaServer 服务注册 …