CPU Burst有副作用吗?让数学来回答!| 龙蜥技术
Posted OpenAnolis龙蜥社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPU Burst有副作用吗?让数学来回答!| 龙蜥技术相关的知识,希望对你有一定的参考价值。
编者按:CPU Burst 特性已合入 Linux 5.14,Anolis OS 8.2、Alibaba Cloud Linux2、Alibaba Cloud Linux3也都支持CPU Burst特性。
![](https://image.cha138.com/20210903/2da6bc1e1e6347fda48dd20636fecaf6.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
CPU Bandwidth Controller的保证
使用CPU Bandwidth Controller可以避免某些进程消耗过多CPU时间,并确保所有需要CPU的进程都拿到足够的CPU时间。之所以有这样好的稳定性保证,是因为当Bandwidth Controller设置满足时,有如下的调度稳定性约束:
其中是第i个cgroup的quota,是一个period内该cgroup的CPU需求。Bandwidth Controller对每个周期分别做CPU时间统计,调度稳定性约束保证在一个period内提交的全部任务都能在该周期内处理完;对每个CPU cgroup而言,这意味着任何时候提交的任务都能在一个period内执行完,即任务实时性约束:
![](https://image.cha138.com/20210903/e8f2e1efef374f61bfcd7076fbf4e563.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
假如持续出现调度器稳定性被打破,在每个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突发使用,容易产生较大影响。表格中数据项的格式为![](https://image.cha138.com/20210903/dc000e659813484591b3399813b31aee.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](https://image.cha138.com/20210903/06d5d0731c1b489cbcfc777fb908462f.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](https://image.cha138.com/20210903/2f07832f15a046ae840e8862a5274ca5.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
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年加入阿里云内核组,目前在调度领域等方面学习研究——完——
关于龙蜥社区龙蜥社区是由企事业单位、高等院校、科研单位、非营利性组织、个人等按照自愿、平等、开源、协作的基础上组成的非盈利性开源社区。龙蜥社区成立于2020年9月,旨在构建一个开源、中立、开放的Linux上游发行版社区及创新平台。
短期目标是开发Anolis OS作为CentOS替代版,重新构建一个兼容国际Linux主流厂商发行版。中长期目标是探索打造一个面向未来的操作系统,建立统一的开源操作系统生态,孵化创新开源项目,繁荣开源生态。
龙蜥OS 8.4已发布,支持x86_64和ARM64架构,完善适配Intel、飞腾、海光、兆芯、鲲鹏芯片。欢迎下载: https://openanolis.cn/download加入我们,一起打造面向未来的开源操作系统!Https://openanolis.cn微信公众号 - OpenAnolis龙蜥(OpenAnolis)。
如有侵权,请 删除。
以上是关于CPU Burst有副作用吗?让数学来回答!| 龙蜥技术的主要内容,如果未能解决你的问题,请参考以下文章