云原生混部最后一道防线:节点水位线设计
2022-06-10 09:39:48由于混部是一个复杂的技术及运维体系,包括 K8s 调度、OS 隔离、可观测性等等各种技术,之前的 2 篇文章:历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?
1.引言
在阿里集团,在离线混部技术从 2014 年开始,经历了七年的双十一检验,内部已经大规模落地推广,每年为阿里集团节省数十亿的资源成本,整体资源利用率达到 70% 左右,达到业界领先。这两年,我们开始把集团内的混部技术通过产品化的方式输出给业界,通过插件化的方式无缝安装在标准原生的k8s集群上,配合混部管控和运维能力,提升集群的资源利用率和产品的综合用户体验。
由于混部是一个复杂的技术及运维体系,包括 K8s 调度、OS 隔离、可观测性等等各种技术,之前的 2 篇文章:历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?如何在云原生混部场景下利用资源配额高效分配集群资源?今天我们要关注的是混部在单机运行时的最后一道防线——单机水位线设计。
2.为什么需要单机水位线
如上图所示,Pod 的运行时的三个生命周期阶段,在经过配额检查和调度后,终于,不同 Qos 等级的 Pod 运行在同一个节点上了,这个时候,高优和中优的 Pod 使用的是节点上的容器分配总量,而低优 Pod,则是基于高中优实际的资源用量,然后被调度器调度到节点上面去运行。从下图可以看到,当一个节点上还有较多的空余资源时,完全可以提供给低优资源使用,而当高/中优 Pod 实际资源用量高过一定的值之后,资源竞争非常激烈时,节点上再跑低优 Pod 只会导致高/中优 Pod 的服务质量受损,所以这个时候,我们将不再允许低优 Pod 在这个节点上运行。为了标识或者说判断节点资源的竞争激烈程度,那么非常顺理成章的一个设计就是,看这个节点上的资源使用率是否过高。如果超过一定使用率,那么我们就需要对低优 Pod 做相应的操作。这个判断的临界阈值,就是单机的水位线。
这里另外能看到的一点是,水位线仅仅是为低优 Pod 所设置的,高/中优 Pod 并不会感知到水位线,他们可以自由地使用整机的所有资源,所有的系统行为都和没有打开混部是一样的。
3.水位线的分级
对于一个资源趋向于饱和的节点来说,我们对于低优 Pod 可以有各种操作的手段,如果仅仅是简单的杀掉低优 Pod 的话,整个混部系统也可以工作,这个动作我们称为“驱逐”。但如果在一定时间后,机器上的资源竞争又降低的话,那么低优 Pod 被杀死并在别的机器上重新启动,这里会大大延长低优 Pod 的单个任务的执行时间,所以在设计单机水位线时,需要尽可能的让低优 Pod 也要在可以允许的时间范围内能够“降级”运行。所以,我们有对低优 Pod 的第 2 种操作,就是降低对它的 CPU 供给量,这个操作我们称为“压制”。同时,如果一个节点上的资源趋于饱和,另外还比较顺理成章的系统行为就是不让新的低优 Pod 被调度进来。
于是我们对于节点上低优 Pod 的行为就有 3 种:压制、驱逐和禁止调度,由此就有三条水位线,同时,对于 CPU 这类的可压缩资源和内存这类不可压缩资源,行为还有区别。
注:可压缩资源(例如 CPU 循环,disk I/O 带宽)都是速率性的可以被回收的,对于一个 task 可以降低这些资源的量而不去杀掉 task;和不可压缩资源(例如内存、硬盘空间)这些一般来说不杀掉 task 就没法回收的。来自文章《在 Google 使用 Borg 进行大规模集群的管理 5-6》- 6.2 性能隔离[1]
这些水位线总体列表如下:
水位线 |
系统行为 |
内存 |
|
禁止调度水位线 |
不让新的低优 Pod 被调度到这个节点上 |
有 |
有 |
压制水位线 |
压制低优 Pod 的资源用量 |
有 |
无 |
驱逐水位线 |
在这个节点上杀死低优 Pod,让上层应用重新拉起新 Pod 进入重调度流程,看是否能运行在别的节点上 |
有 |
有 |
这些水位线的合理配置值,应该是 驱逐>压制>禁止调度。不过在实际的混部生产中,我们一般会把禁止调度水位线和压制水位线使用同一个配置值,来降低系统运维同学的理解成本,以及配置工作量。这样合并后就会存在 CPU 的 2 条水位线,内存的一条水位线。
4.驱逐条件:基于满足度的驱逐模式
这张图展示了单机上实际的系统运行例子:
一个容易考虑到的设计是,驱逐低优任务前去设定一个延迟时间,这样可以让低优 Pod 有更多的机会等到系统有足够的资源,继续运行,然而这个设计,会造成几个问题:
因此,我们发明了基于满足度的低优 Pod 的 CPU 资源驱逐方式,定义了以下几个概念:
这样,低优 Pod 的驱逐条件就变为了:
而驱逐低优 Pod 的排序为:
内存的驱逐方式和 CPU 基本类似,但没有满足率,到了驱逐水位线按照优先级和内存大小来进行驱逐。
注:低优 Pod 的在别的节点上重建,还是依赖于低优 Pod 的管控系统(例如,离线计算的框架 Spark/Flink 等),这个重建过程往往涉及到临时缓存的文件或者数据的迁移和一致性的校验,这个重建操作并不适合在 K8s 层主动的去做操作,而是交给上层管控系统或者 operator 更加合适。
5.展望:是否有更好的设计?
在本文的开始,提到了衡量系统资源的竞争激烈程度,最简单和直观的就是看资源利用率。当然,在实际的大规模集群运行过程中,我们也看到了资源利用率高和资源竞争激烈并不是完全的一一对应关系,甚至有些应用在 CPU 利用率非常高的情况下,依然稳定运行,而另外一些应用,在一个低的 CPU 利用情况下,就会非常的“卡”。这就意味着如果我们有新的、更好的指标来衡量系统的利用率,那么我们对相应的 Workload 就能有更“微操”的操作,在保证应用 SLO 的同时,提升集群的资源利用率。
6.相关解决方案介绍
进入了 2022 年,混部在阿里内部已经成为了一个非常成熟的技术,为阿里每年节省数十亿的成本,是阿里数据中心的基本能力。而阿里云也把这些成熟的技术经过两年的时间,沉淀成为混部产品,开始服务于各行各业。云原生混部相关能力已经申请了多项独立的知识产权。
在阿里云的产品族里面,我们会把混部的能力通过 ACK 敏捷版,以及 CNStack(CloudNATive Stack)产品家族,对外进行透出,并结合龙蜥操作系统(OpenAnolis),形成完整的云原生数据中心混部的一体化解决方案,输出给我们的客户。
参考文档:
[1]《在Google使用Borg进行大规模集群的管理 5-6》:
章丘的景点有哪些?
章丘百脉泉公园门票价格:50元 百脉泉为济南七十二名泉之一,与趵突泉齐名并列,曾巩云:“岱阴诸泉,皆伏地而发,西则趵突为魁,东则百脉为冠。 ”“百脉寒泉珍珠滚”,居章丘八景之首,是中国北方独具特色的泉景公园。 百脉泉公园因地缘势,沿水之滨,建有儿童乐园区、名泉水景区、花园景树区、幽静学习区、密林散步区、龙泉寺、清照园。 园中园-清照词园位于百脉泉的北侧,西起荷花公园,东至环湖东路,北起济青路,南至百脉泉公园,总面积260亩。 根据规划,清照词园以“现代骨、民族魂、自然衣”为设计理念,以百脉泉公园和现有的清照园为生态文化主线,利用百脉泉充沛的泉水资源,营造由风、花、雪、月四部分组成的泉水园林景观,即清音风、木簟花、庭院雪、故乡月四组景区,并以桥、岛、堤、栈道等形式串连成一个整体。 危山兵马俑 危山兵马俑坑是一座汉代兵马俑陪葬坑。 出土于济南章丘市圣井镇政府驻地南方附近的危山风景区半山腰上,是目前山东地区发现的第一座保存完好的兵马俑陪葬坑,是“我国继秦始皇兵马俑、陕西咸阳杨家洼兵马俑之后,发现的第三大兵马俑坑。 ” 坑长9.7米、宽1.9米,深约70厘米。 坑内共出土彩绘兵马俑100多具。 兵马俑阵的排列按照汉代贵族陪葬体制安放,前队为骑兵队列、中部为车队、后部为步兵队列。 骑兵队列每排五人,共约30人,骑马陶俑气宇轩昂、栩栩如生,马俑呈赤红色,轮廓分明、雄健有力,周围有护卫队列。 马俑的耳朵和尾巴并非与马身连为一体,而是从马头和马臀上的小孔分别插入,马耳和马尾都可以自如地抖动。 中部是由三驾马车组成的车队,前面两辆是驷马立车,由四匹高头大马拉车,即古语“君子一言,驷马难追”的由来;后面是一架双辕轺车。 城子崖遗址博物馆 位于章丘市龙山镇政府西1公里处,1994年,济南。 章丘共投资600多万元兴建建筑面积达5000多平方米。 由中国社科院考古研究所著名古建筑专家扬洪勋设计,为全国唯一的一座土堡式建筑,仿照原始社会土城之建筑风格。 远远望去,门厅上方,周谷城先生题写的“城子崖遗址博物馆”8个苍劲有力的大字在阳光的映照下熠熠生辉。 步入馆内有三个展厅。 第一展厅突出陈列了龙山西河遗址出土的文物,以红陶器为主,距今约8000多年。 眼明泉公园 眼明泉公园位于西环路以东,胶济铁路以北,明塘街以西,济青路以南,是章丘市百脉泉公园之后,建设的又一处以泉水景观为特点的园林风景区。 2004年4月23日,眼明泉公园建设工程全面开工。 9月21日,建设工程顺利竣工,10月1日,正式向公众免费开放。 该园占地面积540亩,其中水域面积约143亩。 公园共分三部分:西麻湾源头区、荷花泉片区和眼明泉片区。 设计构思主要是突出泉水、溪流和水生植物观赏等特色。 11万株乔、灌木植物整齐地蔓立于河道两侧,7万平方米的地被植物积水生植物把公园装点得绿意盎然、生机勃勃。 整个公园沿泉水、溪流、池塘和湖泊的景观视线尽可能开敞,为游客提供亲水性界面,提高其观赏性价值。 济南植物园 济南植物园位于章丘市西南部,园区距济南市区35公里,东邻省道244线,北距309国道4公里,南与正在建设的第二条济青高速公路毗邻,距济南国际机场26公里,交通条件十分便利。 总面积5000亩,园区地势南高北低,西高东低,海拔高度最高点为223.1米,海拔高度最低点为127.2米.总体规划包含植物园、世界城、娱乐园、娱乐园、游乐城、名士园、度假区等六大主题园区及相应的配套服务设施。 预计建设期3至5年,总投资5亿元人民币,目前已建成了“半山堂”、“望云湖”、“韩国馆”等多处景区景点。 是济南市园林局围绕“发展济南近郊游,填补济南无综合性生态园区空白”而投资兴建的集旅游观光、休闲娱乐、别墅度假等于一体的又一个大型生态旅游景区。 朱家峪民俗旅游区 “齐鲁第一古村,江北聚落标本”——朱家峪位于明水城东南5公里,胡山东北脚下,距省会济南40公里,从309国道(经十东路)南行1.5公里便到该村。 朱家峪原名城角峪,后改为富山峪,朱氏于明洪武四年(1371)入村,因朱系国姓,又将富山峪改名朱家峪。 据省内外专家考证,古村土台子出土陶器残片和斑鹿角化.
芹菜的功能是什么
芹菜又叫水芹、旱芹、香芹、西芹、及兰鸭儿菜,含有丰富的营养成分,如蛋白质、脂肪、碳水化合物、钙、磷、铁及维生素B族、维生素C等,其中胡萝卜素含量较高。 中医认为芹菜味甘、性凉,归肺肾经,有清热利水、清热除烦等作用,还有调经、消炎、降压、镇静、健胃等,其主要保健作用有: 1、预防心血管疾病:美国芝加哥大学的研究人员实验发现,芹菜中含有3—丁基苯酞的化学物质,对治疗高血压有显著效果。 每天吃二棵芹菜,约一周可使患者的血压由原来的158/96毫米汞柱下降到118/82毫米汞柱,使血液通畅,有预防心血管病的作用。 2、预防牛皮癣:美国芝加哥大学的一项研究证实,芹菜中含有一定量补骨脂素的成分,可预防牛皮癣,有一定药理作用。 3、预防癌症:美国国家癌症研究所食品计划设计顾问卡拉盖博士指出,在对具有重要抗癌性质的食物所列的单子里,伞科蔬菜(芹菜、胡萝卜及荷兰防风)名列前茅,伞科蔬菜所含有能阻碍癌症发生及扩散的化学物质有类黄酮、类胡萝卜素、香豆素及酚酸。 4、排毒:芹菜含有丰富的纤维素和叶绿素(特别是芹菜叶),多吃有助于消除体内累积的毒性物质。 有毒物质由肝脏排出而被小肠吸收之前,让毒性物质附着在植物纤维和叶绿素上随大便排出体外,还可以吸附肠道的胆固醇而随粪便排出而降低胆固醇。 5、助性:现代科学研究证明,芹菜、黄瓜和巧克力的特殊气味,可激发女性的性欲,称为性趣食品。 芹菜、牡蛎汤被称为新婚燕尔的壮阳滋补汤。 芹菜的叶子比茎含的一样高,多吃叶子
5 G开发学习需要基础吗?
1、熟悉移动通信协议,了解LTE开发,熟悉信令流程
5G开发必要条件,基础中的基础
2、需要c\c++\汇编等底层编程语言开发经验
因为5G开发中对于性能要求是第一位的,100Mbps用户体验、数十Gbps峰值速率、每平方公里数十Tbps流量密度、每小时500KM的移动性能等都需要高效利用系统资源,以包装应用的高性能、稳定性和可用性。 上述编程语言最贴近系统底层,在性能和效率方面是没有其他语言可以比拟的,当然还需要非常了解内存和系统底层核心逻辑资源。
3、Linux操作系统开发经验
5G网络采用NFV/SDN、云原生技术实现网络虚拟化、云化部署,而NFV技术则是5G开发必选,NFV技术的实现原理是通过使用x86等通用性硬件以及虚拟化技术,来承载各类功能的软件处理。 而这些通用X86平台的操作系统当仁不让就是Linux系统了。 Linux的特点是多用户、多任务、支持多线程和多CPU的操作系统,5G开发这种高性能应用开发肯定少不了Linux。
发表评论