简介: 使用CPU Burst的副作用是什么?是否有不适用的场景呢?戳我给你答案~

编者按:CPU Burst 特性已合入 Linux 5.14,Anolis OS 8.2、Alibaba Cloud Linux2、Alibaba Cloud Linux3也都支持CPU Burst特性。

为了避免限流的出现,有时我们不得不牺牲容器部署密度,从而导致资源浪费的产生。在解决方案部分,我们也介绍了新的CPU Burst 技术,通过这一技术,我们既能保证容器运行服务质量,又不降低容器部署密度。听起来有点像个银弹啊?那么,使用CPU Burst的副作用是什么?是否有不适用的场景呢?为了回答这个问题,本文将介绍CPU Burst打破的调度保证,以及CPU Burst影响评估。尽管这些CPU突发的使用造成的CPU使用差异在CPU利用率上很多时候不明显,但是我们仍然关心这种改变的影响。当然,结论是明确的:CPU Burst的负面影响完全可以忽略。仅在CPU利用率高达70%的环境里CPU Burst开始影响关键指标,而我相信大家日常生产环境的CPU利用率都远远低于这个水平。

CPU Bandwidth Controller的保证

使用CPU Bandwidth Controller可以避免某些进程消耗过多CPU时间,并确保所有需要CPU的进程都拿到足够的CPU时间。之所以有这样好的稳定性保证,是因为当Bandwidth Controller设置满足​时,有如下的调度稳定性约束:

​其中​是第i个cgroup的quota,是一个period内该cgroup的CPU需求。Bandwidth Controller对每个周期分别做CPU时间统计,调度稳定性约束保证在一个period内提交的全部任务都能在该周期内处理完;对每个CPU cgroup而言,这意味着任何时候提交的任务都能在一个period内执行完,即任务实时性约束:

​不管任务优先级如何,最坏情况下任务执行时间(WCET, Worst-Case Execution Time)不超过一个period。

假如持续出现

调度器稳定性被打破,在每个period都有任务积攒下来,新提交的作业执行时间不断增加。

使用CPU Burst的影响

出于改善服务质量的需要,我们使用CPU Burst允许突发的CPU使用之后,对调度器的稳定性产生什么影响?答案是当多个cgroup同时突发使用CPU,调度器稳定性约束和任务实时性保证有可能被打破。这时候两个约束得到保证的概率是关键,如果两个约束得到保证的概率很高,对大多数周期来任务实时性都得到保证,可以放心大胆使用CPU Burst;如果任务实时性得到保证的概率很低,这时候要改善服务质量不能直接使用CPU Burst,应该先降低部署密度提高CPU资源配置。于是下一个关心的问题是,怎么计算特定场景下两个约束被打破的概率。

评估影响大小

定量计算可以定义成经典的排队论问题,并且用蒙特卡洛模拟方法求解。定量计算的结果表明,判断当前场景是否可以使用CPU Burst的主要影响因素是平均CPU利用率和cgroup数目。CPU利用率越低,或者cgroup数目越多,两个约束越不容易被打破可以放心使用CPU Burst。反之如果CPU利用率很高或者cgroup数目较少,要消除CPU限流对进程执行的影响,应该降低部署提高配置再使用CPU Burst。问题定义是:一共有m个cgroup,每个cgroup的quota限制为1/m每个cgroup在每个周期产生的计算需求(CPU利用率)服从某个具体分布,这些分布是相互独立的。假设任务在每个周期的开始到达,如果该周期内的CPU需求超过100%,当前周期任务WCET超过1个period,超过的部分累积下来和下个周期新产生的CPU需求一起在下个需求处理。输入是cgroup的数目m和每个CPU需求满足的具体分布,输出是每个周期结束WCET > period的概率和WCET期望。使用蒙特卡洛模拟求解过程省略,详细请关注后续系列文章。以输入的CPU需求为帕累托分布、m=10/20/30的结果为例进行说明。选择帕累托分布进行说明的原因是它产生比较多的长尾CPU突发使用,容易产生较大影响。表格中数据项的格式为

其中越接近1越好,​概率越低越好。

u_avg

m=10

m=20

m=30

10%

1.0000/0.00%

1.0000/0.00%

1.0000/0.00%

30%

1.0000/0.00% 1.0000/0.00% 1.0000/0.00%

50%

1.0003/0.03% 1.0000/0.00% 1.0000/0.00%

70%

1.0077/0.66% 1.0013/0.12% 1.0004/0.04%

90%

1.4061/19.35% 1.1626/10.61% 1.0867/6.52%

结果跟直觉是吻合的。一方面,CPU需求(CPU利用率)越高,CPU突发越容易打破稳定性约束,造成任务WCET期望变长。另一方面,CPU需求独立分布的cgroup数目越多,它们同时产生CPU突发需求的可能性越低,调度器稳定性约束越容易保持,WCET的期望越接近1个period。

后续

看完本文相信您对CPU Burst的影响已经有了定性了解。如果希望对评估方法有更多了解,请期待系列文章的下篇。

关于作者

常怀鑫(一斋),阿里云内核组工程师,擅长CPU调度领域。

丁天琛(鹰羽),2021年加入阿里云内核组,目前在调度领域等方面学习研究

原文链接

本文为阿里云原创内容,未经允许不得转载。

CPU Burst有副作用吗?让数学来回答!| 龙蜥技术的更多相关文章

  1. Linux内核分析:页回收导致的cpu load瞬间飙高的问题分析与思考--------------蘑菇街技术博客

    http://mogu.io/156-156 摘要 本文一是为了讨论在Linux系统出现问题时我们能够借助哪些工具去协助分析,二是讨论出现问题时大致的可能点以及思路,三是希望能给应用层开发团队介绍一些 ...

  2. open-local部署和使用

    Open-Local简介 Open-local 是阿里巴巴开源,由多个组件构成的本地磁盘管理系统,目标是解决当前kubernetes本地存储能力缺失问题. Open-Local包含四大类组件: • S ...

  3. 操作系统学习笔记(五)--CPU调度

    由于第四章线程的介绍没有上传视频,故之后看书来补. 最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助.同时盼望大家能对文章评论,大家一起多多交 ...

  4. 操作系统概念学习笔记 10 CPU调度

    操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU.操作系统能够提高计算机的吞吐率. 对于单处理器系统.每次仅仅同意一个进程执行:不论什么其它进程必须等待,直到C ...

  5. cpu怎么实现运算的

      这么好玩的问题,没人回答说不过去.不懂电子元件的码农我要强答一发了.太学术的我不会,你们也听不懂.所以臭不要脸非常不严谨地科普一记.说错不许打我.另外关于这个问题,推荐<编码 (豆瓣)> ...

  6. 如何解决Maple的应用在数学中

    对任意数学和技术学科的研究员.教师和学生而言,Maple是一个必备的工具.通过Maple,教师将复杂数学问题注入生命,学生的精力集中在概念理解上而不是如何使用工具上,研究员可以开发更复杂的算法或模型. ...

  7. KVM 介绍(2):CPU 和内存虚拟化

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  8. 高通/苹果/联发科:手机CPU那些事

    如今人们买手机,都比较关心采用了什么CPU,因为CPU直接决定了这台手机的性能,CPU之于手机就好比人的大脑,它是整台手机的控制中枢系统,也是逻辑部分的控制中心.又相当于车的发动机,发动机越强劲,车子 ...

  9. 龙芯将两款 CPU 核开源,这意味着什么?

    10月21日,教育部计算机类教学指导委员会.中国计算机学会教育专委会将2016 CNCC期间在山西太原举办“面向计算机系统能力培养的龙芯CPU高校开源计划”活动,在活动中,龙芯中科宣布将GS132和G ...

  10. windows下绑定线程(进程)到指定的CPU核心

    一个程序指定到单独一个CPU上运行会比不指定CPU运行时快.这中间主要有两个原因:1)CPU切换时损耗的性能.2)Intel的自动降频技术和windows的机制冲突:windows有一个功能是平衡负载 ...

随机推荐

  1. Ubuntu 14.04 升级到Gnome3.12z的折腾之旅(警示后来者)+推荐Extensions.-------(一)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文发布于 2014-12-19 22:40:20 ...

  2. window-命令行操作

    window命令行操作 调起命令行-win+r输入cmd 网络探活 ping www.baidu.com 快捷启动应用 打开记事本 notepad 打开画图 mspaint 打开计算器 calc 命令 ...

  3. [HTML、CSS]细节、经验

    [版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/130134573 出自[进步* ...

  4. C# 人脸比对服务,自带模型,离线部署

    软件说明 基于以下开源项目,做了再次封装 GitHub - ViewFaceCore/ViewFaceCore: C# 超简单的离线人脸识别库.( 基于 SeetaFace6 ) 可以一键开启服务: ...

  5. Java实现栈

    package algorithm; import java.util.Arrays; import java.util.Iterator; /** @author Administrator @da ...

  6. sql语句TRUNCATE 清空表数据

    清空表数据 TRUNCATE TABLE zzsfp_hwmx;

  7. Refresh 重构(Refactor)

    最近在闲暇之余重(第)温(一..次)此书, 首先能感受到的, 无论你是新程序员还是老程序员, 这本书都已经不具备太多的可读性了. 由于本书成书年代久远, 那个时候软件行业还不够发达, 面向对象还没有被 ...

  8. #莫比乌斯反演#BZOJ 2694 LCM

    题目 多组询问求 \[\sum_{i=1}^n\sum_{j=1}^m{|\mu(\gcd(i,j))|*lcm(i,j)}\pmod {2^{30}} \] \(T\leq 10^4,n,m\leq ...

  9. #KD-Tree#洛谷 4849 寻找宝藏

    题目传送门 题目大意 在一个四维坐标系中,给定 \(n\) 个点,问有多少种选择点的方案, 使得这些点排序后任意坐标单调不降,并且选择的点权和最大,同时输出最大值 分析 设 \(f[i]\) 表示最后 ...

  10. Python格式化字符串:%、format、f-string

    目前Python格式化字符串的方式有三种: 1. % 2.format 3.f-string % 格式化常用方法: # % 格式化字符串 s1 = 'name is %s' % ('zhangsan' ...