在系列文章上篇和中篇(参考相关阅读),我们介绍了优化效果,并且评估了影响。而在本文中,我们将进一步展示详细的模拟结果,通过分析这些不同场景的结果给出结论和建议;我们还会介绍采集和模拟工具,使读者能针对自己的业务场景进行评估。
我们设定整个系统存在 m 个 cgroup,每个 cgroup 公平瓜分总量为 100% 的 CPU 资源,即
quota=1/m
。每个 cgoup 按相同规律(独立同分布)产生计算需求并交给 CPU 执行。

|
参数 |
描述 |
值 |
|
distribution |
计算需求产生的分布 |
负指数、帕累托 |
|
u_avg |
平均产生的计算需求 |
10%-90% |
|
m |
cgroup(容器)个数 |
10、20、30 |
|
b |
令牌桶的buffer大小(相对于其quota的倍率) |
100%、200%、∞ |
负指数分布是排队论模型中最常见、最多被使用的分布之一。其密度函数为
,
其中
。
帕累托分布是计算机调度系统中比较常见的分布,且它能够模拟出较大的延迟长尾,从而体现 CPU Burst 的效果。其密度函数为
。
为了抑制尾部的概率分布使其不至于过于夸张,我们设置了
,
此时当 u_avg=30% 时可能产生的最大计算需求约为 500%。
按上述参数设置进行蒙特卡洛模拟的结果如下所示。我们将第一张(WCET 期望)的图表 y 轴进行颠倒来更好地符合直觉。同样地,第二张图表(WCET 等于 1 的概率) 表示调度的实时性得到保证的概率,以百分制表示 。
负指数分布


一般来说,u_avg(计算需求的负荷)越高,m(cgroup数量)越少,WCET 越大 。前者是显然的结论,后者是因为独立同分布情况下任务数量越多,整体产生需求越趋于平均,超出 quota 需求的任务和低于 quota 从而空出 cpu 时间的任务更容易互补。
工具可以在这里获取:https://codeup.openanolis.cn/codeup/yingyu/cpuburst-simulator


想要进一步了解该工具的用法,或是出于对理论的兴趣去改变分布查看模拟结果,都可以访问上面的仓库链接找到答案~
关于作者
常怀鑫(一斋),阿里 云内核组工程师,擅长CPU调度领域。
加入社区 SIG
官网:
https://openanolis.cn/sig/java/doc/216166872482840581

—— 完 ——
加入龙蜥社群
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】拉你入群;加入钉钉群:扫描下方钉钉群二维码。欢迎开发者/用户加入龙蜥社区(OpenAnolis)交流,共同推进龙蜥社区的发展,一起打造一个活跃的、健康的开源操作系统生态!

关于龙蜥社区
龙蜥社区 (OpenAnolis)是由 企事业单位、高等院校、科研单位、非营利性组织、个人等按照自愿、平等、开源、协作的基础上组成的非盈利性开源社区。龙蜥社区成立于2020年9月,旨在构建一个开源、中立、开放的Linux上游发行版社区及创新平台。
短期目标是开发龙蜥操作系统(Anolis OS)作为CentOS替代版,重新构建一个兼容国际Linux主流厂商发行版。中长期目标是探索打造一个面向未来的操作系统,建立统一的开源操作系统生态,孵化创新开源项目,繁荣开源生态。
龙蜥OS 8.4已发布,支持x86_64和ARM64架构,完善适配Intel、飞腾、海光、兆芯、鲲鹏芯片。
欢迎下载:
https://openanolis.cn/download
加入我们,一起打造面向未来的开源操作系统!
https://openanolis.cn
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70004278/viewspace-2837554/ ,如需转载,请注明出处,否则将追究法律责任。