带你读《2022龙蜥社区全景白皮书》——6.1.3 资源混部场景的内核隔离实现方案(上)

简介: 带你读《2022龙蜥社区全景白皮书》——6.1.3 资源混部场景的内核隔离实现方案(上)

6.1.3 资源混部场景的内核隔离实现方案


概述


2014年,阿里巴巴开始了第一次探索混部,经过七年磨练,这把资源利用率大幅提升的利剑正式开始商用。通过从计算资源、内存 资源、存储资源、网络资源等全链路的隔离以及毫秒级的自适应调度能力,通过智能化的决策与运维能力,支撑着内部百万级的 Pod混部,不管是CPU与GPU资源,普通容器与安全容器,包括国产化环境各种异构基础设施,都能实现高效混部,这让核心电商 业务生产集群成本下降了50%以上,同时核心业务受到的干扰小于5%。在商用化输出的版本里面,资源混部能力完全基于云原生社 区标准,以插件化的方式无缝的安装在k8s集群作为输出交付形态。其中核心的OS操作系统层隔离能力,已经发布到支持多架构的 开源、中立、开放的Linux操作系统发行版-龙蜥(Anolis OS)中。


场景挑战


资源混部就是将不同类型的业务在同一台机器上混合部署起来,让它们共享机器上的CPU、内存、IO等资源,目的就是最大限度地 提高资源利用率,从而降低采购和运营等成本。混部通常是将不同优先级的任务混合在一起,例如高优先的实时任务(对时延敏感, 资源消耗低;称为在线)和低优先级批处理任务(对时延不敏感,资源消耗高;称为离线),当高优先级业务需要资源时,低优先级任 务需要立即归还,并且低优先级任务的运行不能对高优先级任务造成明显干扰。


假设我们现在有一台服务器,上面运行了高优的在线业务,以及离线任务也在上面运行运行。在线任务对响应时间(Response  Time, RT)的需求是很明确的,要求尽可能低的RT,故被称之为延迟敏感型(Latency-Sensitive, LS)负载;离线任务永远是有多 少资源吃多少资源的,故此类负载被称之为Best Effort(BE),如果我们对在线和离线任务不加干涉,那么离线任务很有可能会频 繁、长期占用各种资源,从而让在线任务没有机会调度,或者调度不及时,或者获取不到带宽等等,从而出现在线业务RT急剧升高 的情况。所以在这种场景下我们一定需要必要的手段来对在线和离线容器进行资源使用上的隔离,来确保在线高优容器在使用资源 时可以及时的获取,最终能够在提升整体资源使用率的情况下保障高优容器的QoS。


通过一个例子,说明在线和离线混着跑的时候,可能出现的情况:


首先最有可能发生在离线竞争的,可能是CPU,因为CPU调度是核心,在线和离线任务可能分别会调度到一个核上,相互抢执行时间;

当然任务也可能会分别跑到相互对应的一对HT上,相互竞争指令发射带宽和其他流水线资源;

接下来CPU的各级缓存必然是会被消耗掉的,而缓存资源是有限的,所以这里涉及到了缓存资源划分的问题; 再接下来,假设我们已经完美解决了各级缓存的资源划分,后面还是有问题。首先是内存是CPU缓存的下一级,内存本身也类似, 会发生争抢,对于在线和离线任务分别来说都是需要像CPU缓存一样进行资源划分的;

另外当CPU最后一级缓存(Last Level Cache, LLC)没有命中的时候,内存的带宽(我们称之为运行时容量,以有别于内存大小划 分这种静态容量)会变高,所以内存和CPU缓存之间的资源消耗,是相互影响的;

然后我们假设CPU和内存资源都没问题,对于本机来说现在隔离已经做得很好了,但是在线高优的业务和离线任务的运行过程中都 是和网络有密切的关系,那么很容易理解,网络也可能是需要隔离的;

最后,线上部分机型对IO的使用可能会发生抢占,我们需要有效的IO隔离策略。


以上就是一个很简单的资源隔离流程的思路,可以看到每一环都有可能会出现干扰或者竞争。


方案特色


把集群混合起来,将不同类型的任务调度到相同的物理资源上,通过调度,资源隔离等控制手段 , 在保障SLO的基础上,充分使用资 源能力,极大降低成本,我们称这样的技术为混部(Co-loaction)。


image.png


混部在一起的任务有两个比较重要的特征:

1、可以划分优先级:一定需要优先级比较低的任务,它们能像水和沙子一样,随时能被赶走,而不会受到不可承受的影响,让优先 级高的任务不受干扰。在线的特点是:峰值压力时间不长,对延时比较敏感,业务的压力抖动比较厉害,典型的如早上10点的聚划 算活动,就会在非常短的时间内,造成交易集群的压力瞬间上升10几倍,对于稳定的要求非常高,在混部的时候,必须要保证在线 的通畅,需要有极强的抗干扰能力。而计算任务的特点是:平时的压力比较高,相对来说计算量可控,并且延迟不敏感,失败后也 可以重跑。至少需要几分钟跑完的计算任务,相对于几秒甚至几十秒的延迟,并不会产生严重的问题,正好可以承提起水和沙子的 角色。


2、资源占用互补性:两种任务在不同的时间点对水位的占用不一样。如在线服务是,平时比较低,大促时比较高;凌晨比较低,白 天比较高。而计算任务则反过来,平时比较高,大促时可以降级;凌晨非常高,白天却要低一些。


这种方式带来的成本节省是非常巨大的:假设数据中心有N台服务器,利用率从R1提高到R2,不考虑其他实际制约因素的情况下, 节约X台,那么理想的公式是:

N*R1 = (N-X)*R2

=> X*R2 = N*R2 – N*R1

=> X = N*(R2-R1)/R2


也就是说如果企业有10万台服务器,利用率从28% 提升到40%,代入上述公式,就能节省出3万台机器。假设一台机器的成本为2万 元,那么节约成本就有6个亿。

混部调度架构:


image.png


《2022龙蜥社区全景白皮书》——06 “龙蜥+”精选方案与案例——6.1 精选典型方案——6.1.2 系统安全场景的加解密加速方案(下) https://developer.aliyun.com/article/1229105


相关文章
Element UI - el-table 渲染慢,卡的原因
Element UI - el-table 渲染慢,卡的原因
4018 0
|
分布式计算 网络协议 Java
微服务技术系列教程(20) - SpringCloud- 服务治理Eureka(替代方案)
微服务技术系列教程(20) - SpringCloud- 服务治理Eureka(替代方案)
527 0
微服务技术系列教程(20) - SpringCloud- 服务治理Eureka(替代方案)
|
测试技术 网络安全 数据安全/隐私保护
burpsuite口令爆破的四种模式
burpsuite口令爆破的四种模式
|
资源调度 运维 监控
带你读《2022龙蜥社区全景白皮书》——6.1.3 资源混部场景的内核隔离实现方案(下)
带你读《2022龙蜥社区全景白皮书》——6.1.3 资源混部场景的内核隔离实现方案(下)
759 103
|
弹性计算 Serverless 调度
面向Workload级别的灵活可配置Serverless弹性解决方案
Serverless作为云计算的延伸,能提供按需弹性伸缩的能力,让开发者无需关心具体资源部署,优化资源使用,因而被众多云厂商采用本文将介绍四种资源可配置插件,探讨它们的核心能力、技术原理,以及在实际应用中的优劣势。
|
缓存 并行计算 Linux
深入解析Linux操作系统的内核优化策略
本文旨在探讨Linux操作系统内核的优化策略,包括内核参数调整、内存管理、CPU调度以及文件系统性能提升等方面。通过对这些关键领域的分析,我们可以理解如何有效地提高Linux系统的性能和稳定性,从而为用户提供更加流畅和高效的计算体验。
630 24
|
Kubernetes 安全 网络协议
操作系统的未来之路:探索微内核架构与分布式系统
随着计算需求的不断演变和技术的快速进步,传统的宏内核操作系统正面临性能和安全性的挑战。本文旨在探讨操作系统的未来发展道路,特别是微内核架构和分布式系统在提升性能和安全性方面的潜力。通过分析微内核设计的优势、分布式系统的特性以及两者结合的可能性,文章旨在为读者提供对操作系统未来发展趋势的深入理解。
655 27
|
Kubernetes Linux 网络安全
kubeadm安装k8s
该文档提供了一套在CentOS 7.6上安装Docker和Kubernetes(kubeadm)的详细步骤,包括安装系统必备软件、关闭防火墙和SELinux、禁用swap、开启IP转发、设置内核参数、配置Docker源和加速器、安装指定版本Docker、启动Docker、设置kubelet开机启动、安装kubelet、kubeadm、kubectl、下载和配置Kubernetes镜像、初始化kubeadm、创建kubeconfig文件、获取节点加入集群命令、下载Calico YAML文件以及安装Calico。这些步骤不仅适用于v1.19.14,也适用于更高版本。
508 1
|
存储 缓存 算法
十九、Linux性能优化实战学习笔记- 为什么系统的Swap变高了?
十九、Linux性能优化实战学习笔记- 为什么系统的Swap变高了?
309 0
十九、Linux性能优化实战学习笔记- 为什么系统的Swap变高了?
|
弹性计算 监控 应用服务中间件
使用 Fleet 管理 Elastic Agent 监控应用
本场景主要介绍了如何使用 Fleet 集中管理 Elastic Agent ,并对主机的指标,日志,服务等进行监控。

热门文章

最新文章