《2022龙蜥社区全景白皮书》——06 “龙蜥+”精选方案与案例——6.1 精选典型方案——6.1.3 资源混部场景的内核隔离实现方案(上) https://developer.aliyun.com/article/1229077
混部解决的核心问题:
在保证部署应用的服务等级目标SLO的前提下,充分利用集群中的空闲资源,来提升集群整体的利用率。
(a)在线服务类型应用(延时敏感型,Latency Sensitive) :
容器混合部署时的互相干扰(noisy neighbor)
单机的资源竞应用对资源的敏感程度不同,在资源调度和单机服务质量上都需要精细化的管理策略
资源竞争引发应用响应时间出现抖动毛刺的现象,产生长尾问题(tail latency)
(b)作业类型批处理任务(计算密集型):
分级可靠的资源超卖,满足差异化的资源质量需求
及时识别干扰源,避免影响LS应用
混部的资源隔离:
在混部中,放在首位的就是资源隔离问题,如果隔离问题没做好,竞争问题没解决,那就很容易引发线上的问题。轻一点,让用户的感官体验变差;重一点,引发线上故障,造成无法服务的恶劣影响。
而解决资源竞争的问题,主要从两个方面出发:
1.调度:通过资源画像的技术,在资源真正发生竞争之前,就预测规划好,尽量减少这种情况发生的可能性。它是主动触发,可以不断优化,但延时较高。
2.内核:在资源真正发生竞争的极端情况下,根据任务的优先级,如何做到既能保障高优先级任务不受影响,又能控制影响到的低优先级任务伤害最低。它是被动触发,保底的必须手段,生效快。
为了满足混部的需求,在服务器单机维度的内核资源隔离技术是最为关键的一项技术。龙蜥云内核(ANCK)在资源隔离的技术上深耕多年,并且在行业中处于领先地位,这些内核资源隔离技术主要涉及内核中的调度、内存和IO这三大子系统,并且在各个子系统领域根据云原生的混部场景进行了深入的改造和优化,关键优化包括但不限于:cpu group identity技术,SMT expeller技术,基于cgroup的内存异步回收技术等。
下图是资源隔离能力在整个混部方案中的位置:
内核资源隔离技术主要涉及内核中的调度、内存和IO这三大子系统,这些技术基于Linux CGroup V1提供资源的基本隔离划分以及 QoS保障,适用于容器云场景,同时也是大规模化混合部署方案所强依赖的关键技 术。
除了基本的CPU、内存和IO资源隔离技术外,龙蜥内核还实现有资源隔离视图、资源监控指标SLI(ServiceLevelIndicator)以及资 源竞争分析工具等,提供一整套集监控、告警、运维、诊断等整套的资源隔离和混部解决方案,如下图所示:
弹性容器场景的调度器优化
如何保证计算服务质量的同时尽可能提高计算资源利用率,是容器调度的经典问题。随着CPU利用率不断 提升,CPU带宽控制器暴 露出弹性不足的问题日趋严重,面对容器的短时间CPU突发需求,带宽控制器需要对容器的CPU使用进行限流,避免影响负载延迟 和吞吐。
Anolis OS中的CPU Burst技术是一种弹性容器带宽控制技术,在满足平均CPU使用率低于一定限制的条件下,CPU Burst允许短时间 的CPU突发使用,实现服务质量提升和容器负载加速。
在容器场景中使用CPU Burst之后,测试容器的服务质量显著提升,如下图所示,在实测中可以发现使用该特性技术以后,RT长尾问 题几乎消失。
总结
龙蜥云内核在资源隔离的关键技术使社区用户有能力在云原生混部场景中根据业务特点设计最优解决方案,可有效提高用户的资源 使用率并最终降低用户资源的使用成本,非常适用于容器云混部场景,同时也是大规模化混合部署方案所强依赖的关键技术。