爱奇艺:基于龙蜥与 Koordinator 在离线混部的实践解析 | 龙蜥技术

news2024/11/27 21:03:17

在 2022 云栖大会龙蜥峰会云原生专场上,来自爱奇艺的基础架构研究员赵慰分享了《基于龙蜥与 Koordinator 的在离线混部实践》技术演讲,以下为本次演讲内容: 

一、爱奇艺离线业务混部背景

与众多互联网公司一样,爱奇艺常见的负载类型包括业务应用、数据库&中间件以及离线任务。其中业务应用包括有状态应用和无状态应用,无状态应用可以借助运维平台在业务团队和运维团队之间做比较清晰的职责划分,适合混部;而有状态应用较为复杂,混部时的运行质量难以保证。数据库和缓存目前并没有运行在混部集群中。离线任务中的非实时性任务,比如夜间转码、数据处理等只关注吞吐量而不关注时效的任务也是混部的对象。

 

爱奇艺在混部上经历了长时间的探索。

2013 年,爱奇艺初次进行了计算存储混部。进入容器时代后,爱奇艺在 Mesos 上花费了大量精力,最早把在线任务内容生产、 Spark、Storm 等所有工作负载混部在一个集群里,没有进行任何特殊的隔离性处理。在 Docker 上经历了困境后,爱奇艺将业务按节点、集群进行了拆分;这又导致离线任务集群资源常年不够用,在线业务集群利用率非常低,尤其是夜间利用率甚至只有个位数。因此,爱奇艺考虑将夜间线任务的资源提供给离线任务。

2016 年,通过 Mesos Oversubscription 功能引入根据真实资源做额外计数器的机制,将任务分为了延迟敏感和尽力而为两类进行混部。但由于细粒度的隔离性问题,这条道路也无疾而终。

到了 K8s 阶段,由于在线业务的伸缩能力的增强和普及,第二套计数器不再是强需求,爱奇艺直接在 K8s 上进行了混部,通过引入 Kata 保证服务质量。

2022 年,龙蜥 + Koordinator 一并被引入,用于构建下一步的混部架构。

从多年的混部经验里,爱奇艺总结出了影响混部的关键因素:

  • 服务质量,尤其是在线业务的质量,脱离了服务质量则混部无意义。

  • 获取额外资源。

  • 任务适配。

获取额外资源存在有两个思路:

其一为使用一套计数器,按固定比例超卖资源,直接混用,或者按经验比例分配给各个类型的负载。

其二为多套资源计数器,一种方式是利用经验数据判断集群的空闲时间和空闲资源,另一种方式是通过类似 Mesos Oversubscription 的方式做空闲资源的实时探测。 

 

服务质量的策略分为静态和动态。动态指在离线业务或具体的进程之间动态进行调整,静态则是一旦下发即固定,即便有影响也不变动。

二、龙蜥和 Koordinator 在离线业务混部探索

Koordinator 没有对分布架构做本质上的变动,而是在云原生的规范性方面,比如业务类型的抽象上做了更多工作,使 K8s 和 Koordinator 有了做通用分布式架构的可能性,而不像之前只能针对特定的业务做定制。

Koordinator 可以简单理解为给 K8s 增加插件或做了增强,首先会增加一个调度器,引入一套资源技术,在节点上有一个 Koordlet,分别负责收集资源和保证任务的隔离性。

 

其工作机制为利用计数器在真实利用率基础上进行二次分配。整机的真实使用使用率取决于离线任务的使用率,保证在线业务的质量的前提下,水位线可以根据实践随时调整。

Koordinator 在任务分配方面分为五种类型(图中只列举了常用的四种),通过不同层级的分类,对在线业务和离线业务进行了不同层级的保障。

为进一步保证服务质量,爱奇艺引入了龙蜥操作系统(Anolis OS)。Group Identity 功能和 CPU Burst 功能对当前的混部效果起到了很大的提升作用。

Anolis OS 通过配置不同的 Group Identity 启用两套进程调度,一套作为在线业务的调度器,另一套作为离线任务的调度器,在线业务优先级整体高于离线任务。此前,在公平调度的机制下,在线业务、离线业务之间在细粒度上存在互抢资源;而引入两套调度器后,这个问题可以被合理规避。CPU Burst 的作用是使公平调度进程之间的切换更平滑,避免出现毛刺。

 

第一个试点业务为某类型内容实时生产,已经全量运行在混部资源上。从某种意义上它是零成本的,因为全部复用了其他服务器节省出来的资源。目前运行非常稳定,也没有对在线业务造成无法接受的干扰。

每天对热点视频进行二次或更多次编码也是爱奇艺一项较重的非实时离线计算任务,目的在于通过再生产降低码率或提高质量。该任务目前正在灰度验证阶段,期待接入Anolis OS 和 Koordinator 之后能带来足够大的惊喜。

大数据离线计算方面,出于综合考虑,爱奇艺目前依然选择 Kata 作为运行时,因此也正在积极和龙蜥社区进行探索,尝试 Kata 和 Koordinator 的合作。

上图为试点前后的效果对比,在验证环境设计比较保守的情况下,利用率整体提升 50% 以上。图中任务高峰期 CPU 使用率低于水位线的主要原因是BE任务申请的资源量没有被充分利用导致,涉及到离线任务的运营。当然,如何通过技术手段将真实的资源进行三次、四次甚至无限次的分配,也是爱奇艺期望尽快解决的。

三、未来工作展望

未来,爱奇艺将与龙蜥社区携手同行。首先,争取将 CPU 利用率提升到 50% 甚至更高。其次,因为涉及多租户,需要进行资源分配,尤其是离线任务资源总量不稳定,离线池内资源分配不合理和资源抢占问题时有发生,期望能够在未来规避此类问题。最后,爱奇艺将会在离线任务质量保障方面继续探索。

关于龙蜥峰会云原生专场课件获取方式:

【PPT 课件获取】:关注微信公众号(OpenAnolis),回复“龙蜥课件” 即可获取。有任何疑问请随时咨询龙蜥助手—小龙(微信:openanolis_assis)。

【视频回放】:视频回放可前往龙蜥官网查看。 

—— 完 ——

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go语言学习笔记-A Tour of Go 练习笔记-Images

Exercise: Images 练习题目: Remember the picture generator you wrote earlier? Lets write another one, but this time it will return an implementation of image.Image instead of a slice of data. Define your own Image type, implement the necessary methods, …

您的推特营销选对群控了吗

作为跨境电商从业者,我们都知道,如果平台检测到违规,最多的是多账号关联。平台怎么判定我们的账号是否关联呢?一个重要的依据是浏览器的指纹信息。 一、进行站外引流的困难有哪些: 国内用户在推广海外社交媒体时&…

【OpenCV-Python】教程:3-10 直方图(4)直方图反向投影

OpenCV Python 直方图 反向投影 【目标】 直方图反向投影calcBackProject 【原理】 用于图像分割和查找感兴趣目标。简单的说,会创建一个与输入图像同样大小的图像(单通道),每个像素对应像素属于目标的概率。更简单的说就是&am…

pdf文件丢失怎么办?别慌,详细介绍4种恢复方法

pdf文件丢失怎么找到?别慌,停止往电脑上写入新的内容,重要的事情说三遍!下面,我们将会向您详细介绍在pdf文件丢失后的多种方法,请继续阅读以获得更多帮助! 方法1.运用Windows搜索功能 很多时候…

运放参数-共模输入范围-运算放大器

运放共模输入范围 根据实际的应用我们会选择一个运算放大器(op amp),选型过程中工程师会考虑一些参数可例如:电源电压、增益带宽积、输入共模范围、转换速率和输入噪声电压等等。 在本篇文章中重点介绍了运放的输入共模范围的定…

Codeforces Round #724 (Div. 2) C. Diluc and Kaeya

翻译: 蒙德施塔特一个酒庄帝国的大亨,在任何方面都无可匹敌。法佛尼乌斯骑士团中具有异域外表的思想家。 这一次,兄弟俩要处理的是一块刻着他们名字的奇怪木头。这块木板可以表示为一串𝑛字符。每个字符不是“D”就是“K”。您希…

Activiti7工作流(一)

工作流介绍 工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。 案例: 出差费…

视频编解码 — 码控算法

目录 码控算法 码控算法的类型 具体操作过程如下 复杂度求解 帧组级 帧级 GOM级 码控算法 用算法来控制编码器输出码流的大小,码控就是为一帧图像选择一个合适的QP值的过程。 一帧图像的画面确定了之后,画面的复杂度和QP值几乎决定了编码之后的…

float32转float16

背景 当下做AI基本都用float16进行推理,目前用的比较多的还有bfloat16, 这里我们只讨论float16的这个数据类型。float16有个优点是大部分的GPU或者部分CPU支持float16的计算,速度快于float32, 此外显存或者内存也可以减少一半,基于这个特点&…

2022年12月1日最新的SqlServer安装教程

文章目录1、在线安装文件下载2、下载安装包3、下载安装SSMS1、在线安装文件下载 (1)进入官网地址,点击下载:SqlServer下载 (2)等待下载结束,大约几M (3)打开下载的.ex…

Spring Security基于jwt实现权限校验

一 引言 在基于springsecurity和jwt实现的单体项目token认证中我实现了基于jwt实现的认证,本文在此基础上继续实现权限认证 用户认证成功后携带jwt发起请求,请求被AuthenticationFilter拦截到,进行jwt的校验jwt校验成功后,调用JwtAuthenticationProvider从jwt中获得权限信息…

一个分布在多次Softmax后,会趋于相同

本文其实是我在知乎上无意中翻到的一条提问:softmax到底有哪些作用?,其中苏剑林大佬关于第四个问题的回复,给我产生了一些思考。为什么一个分布在多次Softmax之后,每个值会趋于相同?例如[1,100]在大约10次S…

[附源码]JAVA毕业设计高校心理咨询预约系统(系统+LW)

[附源码]JAVA毕业设计高校心理咨询预约系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目…

新建esp32的vscode工程的三种方式

普通的idf工程在vscode下直接打开的时候,会发现很多头文件都是报错的,一些函数/类型等的定义也无法找到,比较影响阅读: 因此在vscode上开发esp32的时候,最好为这个工程提供vscode的支持,以下是三种实现的…

商务部研究院信用所、启信宝联合发布《中国商务信用发展指数报告(2022)》

近期,商务部国际贸易经济合作研究院信用研究所与合合信息全资子公司上海生腾数据科技有限公司(简称“生腾数据”)联合发布了《中国商务信用发展指数报告(2022)》(简称《报告》)。为准确反映中国…

NLP中的对抗训练(附PyTorch实现)

对抗样本的基本概念 要认识对抗训练,首先要了解"对抗样本",它首先出现在论文Intriguing properties of neural networks之中。简单来说,它是指对于人类来说"看起来"几乎一样,但对于模型来说预测结果却完全不…

[附源码]JAVA毕业设计公务用车管理智慧云服务监管平台(系统+LW)

[附源码]JAVA毕业设计公务用车管理智慧云服务监管平台(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

[附源码]Python计算机毕业设计SSM蓝色港湾房产交易与租赁系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

最近基于深度学习大火的AIGC将会抢原创工作者的饭碗?

NLG | CLIP | Diffusion Model GAN | AIGC | Stable Diffusion 随着CLIP、DALLE、Diffusion Model、Magic3D、Stable Diffusion等技术的快速发展,AIGC在全球各大科技巨头间可谓是高频词汇,连带着AI这个老生常谈的话题也一并火热起来。 去年三月&#xf…

【R】R包MethylCal安装问题解决 Rtools is required to build R packages

文章目录写在前面问题描述解决过程【1】安装INLA【2】安装Rtools写在前面 吐槽一番: 一般情况下,不是在万不得已,真心不想用R,最让人望而却步的就是包的安装问题,动不动就出现版本不兼容问题,或者下载这个…