助力Koordinator云原生单机混部,龙蜥混部技术提升CPU利用率达60%|龙蜥技术

简介: 龙蜥社区的三大原生技术为 Koordinator 社区提供了强大的 CPU 混部底层技术支持。

hellorf_2237907020.jpg

文/OpenAnolis Kernel SIG

01 什么是 CPU 混部

CPU 混部是指将不同类型的业务部署到同一台机器上运行,让它们共享机器上的 CPU 资源以提升 CPU 利用率,从而降低机器的采购和运营成本。但是,对于有些类型的任务来说,它们对延时非常的敏感,比如电商、搜索或 web 服务等,这类任务的实时性很高,但是通常对资源的消耗却不是很多,我们称之为在线任务;还有一类任务,它们更多的关注计算或者批处理,对延时没有要求,但是消耗的资源相对较多,我们称之为离线任务。

当这两类任务同时部署到同一台机器上时,由于离线任务对资源的占用较多,资源竞争导致在线任务的延时受到了很大的影响,而且,在超线程架构的机器上,即使离线任务和在线任务跑在不同的超线程 CPU 上,流水线和 cache 的竞争也会导致在线任务的运行受到影响。于是,CPU 混部技术诞生了,来解决离线任务对在线任务延时的影响,同时还能进一步提升 CPU 资源的利用率。

1.png

(图 1/混部单机 CPU 利用率示意图)

02 内核 CPU 混部技术

CPU 混部技术,主要是通过单机操作系统调度器来实现的,通过任务类型来决定所分配到的 CPU 资源。龙蜥社区的三大原生技术为 Koordinator 社区提供了强大的 CPU 混部底层技术支持,包括:

  • Group Identity 混部技术
  • Plugsched 调度器热升级技术
  • CPU 混部插件产品

2.1 龙蜥 Group Identity 技术

龙蜥社区的 CPU 混部技术——Group Identity 给操作系统内核提供了 CPU 混部能力,例如 Alibaba Cloud Linux 2/3 和 Anolis7/8 OS 发行版均使用的是该技术。Group Identity 技术是在原有的 CFS 调度器中新增了另一个运行队列来区分在线和离线任务,而且,为了避免对端 CPU(超线程架构)上离线任务的干扰,Group Identity 会对其进行驱逐。龙蜥的 Group Identity 技术已经经过阿里双十一等大型活动以及大规模商业化的验证,其 CPU 混部能力也得到广大用户和开发者的认可。

2.2 龙蜥 CPU 混部插件

Koordinator 单机操作系统主要是 Alinux2/3 和 CentOS 7.9,对于前者,其 CPU 混部技术来源于龙蜥的 Group Identity,但是对 CentOS 7.9 而言,其内核目前没有提供 CPU 混部能力。对于这种情况,可能有以下几种解决方案:

  1. 制作 CentOS 的衍生版系统,并包含 CPU 混部技术。
  2. 迁移到 Alibaba Cloud Linux 2/3 操作系统发行版。

对于第一种方案,需要从 CentOS 镜像站中下载其内核源码,将 CPU 混部技术移植到内核,编译后安装,然后重启系统便可以使用该技术,但这会涉及到业务迁移和停机,势必会给业务方带来昂贵的代价。

对于第二种方案,虽然迁移工作会有一定的工作量,但是,Alinux2/3 或 Anolis OS 包含了完整的混部资源隔离方案(CPU 混部仅仅是其中一点),技术红利所带来的收益远比迁移代价要大得多。而且 CentOS 即将停服,为了解决 CentOS 停服问题,龙蜥社区推出了 Anolis OS 发行版操作系统,该发行版系统完全兼容 CentOS,用户可以进行无缝迁移。

针对 Koordinator 云原生 CentOS 单机操作系统 CPU 混部能力的缺失,龙蜥社区开发人员给出了另一种方案,利用 plugsched 调度器热升级技术提供一种 CPU 混部技术的调度器插件包,该插件包含了阿里云早期(2017年)的 CPU 混部技术 bvt + noise clean,可直接安装到 CentOS 7.9,不需要停机和业务迁移等工作。

2.2.1 Plugsched 神器

Plugsched 调度器热升级,是龙蜥社区推出的 plugsched SDK 调度器热升级开发工具,它可从 Linux 内核中将调度器解耦,形成一个独立的模块,然后将 CPU 混部技术移植到调度器模块,形成一个调度器插件,然后将其直接安装到运行的系统中就可以使用 CPU 混部技术。Plugsched,可以对内核调度器特性动态的进行增、删、改,来满足业务的需求,且无需进行业务迁移和停机升级,还可以回滚。内核开发人员可通过 plugsched SDK 生产出各种类型的调度器插件来满足不同的业务场景。

Plugsched 调度器热升级论文《Efficient Scheduler Live Update for Linux Kernel with Modularization》已被 ASPLOS 顶会收录,里面详细介绍了 plugsched 技术原理和应用价值,以及全面的测试和评估。目前,plugsched 生产的插件已在蚂蚁集团、阿里云和国内某大型互联网企业规模部署。

Plugsched 开源链接:https://gitee.com/anolis/plugsched

2.2.2 Group Identity 测试

在 Koordinator 社区的在离线最佳实践手册中,对 Group Idnetity 混部技术做了测试,在线任务是 Nginx 服务,离线任务是 ffmpeg 视频转码,机器采用的是阿里云神龙裸金属服务器,系统发行版是 Alibaba Cloud Linux 2,系统内核是 Alibaba Cloud Kernel 4.19,里面搭载了龙蜥社区的 Group Identity CPU 混部技术,测试 case 如下:

基线:单独运行 Nginx 容器

对照组:同时运行 Nginx 容器和 ffmpeg 容器,不设置优先级

实验组:设置 Nginx 为在线高优先级任务,ffmpeg 为离线低优先级

压测机:在另一台服务器上使用 wrk 工具向 Nginx 服务发送请求

测试结果:(单位:ms)

  基线 对照组 实验组
RT-P90 0.533 0.574(+7.7%) 0.548(+2.8%)
RT-P99 0.93 1.58ms(+70%) 0.96(+3.2%)
CPU% 29.6% 85.6% 64.8%

(数据来源:阿里云 ACK 在离线混部最佳实践手册)

从对照组中可以看到,当在、离线任务同时运行时,在线任务 Nginx 的长尾延时受到了很大的影响,尤其是 P99 延时,增加了 70% 左右。但是,给在线容器和离线容器设置优先级后(启用 Group Identity 混部功能),Nginx 的 P90 和 P99 长尾延时受到的干扰非常小,延时仅增加了 2.8% 和 3.2%。

2.2.3 CPU 混部插件测试

为了比较 CPU 混部插件与 Group Identity 的性能差异,开发人员对该调度器插件进行了相同的测试,服务端配置:

测试机器:阿里云神龙裸金属服务器

系统配置:CentOS 7.9 发行版,内核版本 3.10,安装 CPU 混部调度器插件

在线容器和离线容器的配置与压力均与 Group Identity 测试的相同,测试结果如下:(单位:ms)

  基线 对照组 实验组
RT-P90 0.444 0.575(+29.50) 0.504(+13.51%)
RT-P99 0.706 1.7(+140.79) 0.88(+24.64%)
CPU% 25.15% 71.7% 49.15%

从上面的结果来看,没有 CPU 混部插件,离线任务对在线任务的影响很大,P99 延时增长了一倍多,而安装 CPU 混部插件后,P99 延时的影响显著降低,CPU 利用率也接近 50%。但是它的性能不及 Group Identity,Group Identity 能让在线任务受离线任务的干扰小于 5%(CPU 插件是 20% 以上),而且 CPU 利用率能达 60% 以上(CPU 插件接近 50%)。

2.3 Group Identity 更胜一筹

从上面的测试数据来看,不论是离线任务对在线任务的干扰,还是 CPU 利用率的提升,Group Identity 的性能均明显优于 Bvt + noise clean 插件。这是因为两套技术的实现原理不同导致的:noise clean 技术采用的是 throttle 机制,当调度器选择下一个任务时,它会检测对端 CPU 上的任务类型以及当前 CPU 正在执行的任务类型,如果在、离线任务同时存在,则会将离线任务 throttle 掉,然后继续选择下一个任务进行调度,保证在线任务优先执行且不被对端 CPU 上的离线干扰;而 Group Identity 则是给 CFS 调度器增加了低优先级的运行队列,每次选择下一个任务执行时,优先从高优先级队列中选择任务,而且新增了驱逐队列来驱逐对端 CPU 上正在执行的离线任务。从方案设计来看,Group Identity 的设计更加适用于 CPU 混部场景。


从技术演进上来看,龙蜥社区对 Group Identity 技术仍然在维护更新,而 bvt + noise clean 技术已不再更新迭代。再者,龙蜥社区有完整的混部资源隔离方案,而且下一代 CPU 混部技术 Group Identity v2.0 正在投入研发,将会带来更为强大的功能和性能。


对于 plugsched 调度器热升级而言,它对龙蜥社区的 cloud kernel 4.19 和 5.10 的支持更加全面,且会持续维护。但本文的 bvt + noise clean CPU 混部插件是支持在 CentOS 3.10 内核上,该内核不属于龙蜥社区,因此 plugsched 对该内核的支持度不是很高,热升级能力和范围不及龙蜥内核。Plugsched 对 3.10 内核的支持后续也不再更新和维护。

03 结语

最后,欢迎广大技术人员、开源爱好者和读者用户来体验、参与和使用龙蜥带来的 CPU 混部技术 Group Identity 和 Plugsched 神器。我们相信,不论是 Anolis OS、Cloud Kernel 还是 Plugsched,一定都会为各位看官带来意想不到的收益和价值。同时,欢迎广大技术人员、开源爱好者和读者用户一起加入龙蜥社区(入群方式见二维码),与社区共同进步和发展。

Cloud Kernel SIG 主页地址:

https://openanolis.cn/sig/Cloud-Kernel

—— 完 ——

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。

KERNEL.png

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
20天前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
9天前
|
Cloud Native
邀您参加云原生高可用技术沙龙丨云上高可用体系构建:从理论到实践
云原生高可用技术专场,邀您从理论到实践一起交流,探索云上高可用体系构建!
|
20天前
|
Cloud Native JavaScript Docker
云原生技术:构建现代应用的基石
在数字化转型的浪潮中,云原生技术如同一艘承载梦想的航船,引领企业驶向创新与效率的新海域。本文将深入探索云原生技术的核心价值,揭示其如何重塑软件开发、部署和运维模式,同时通过一个简易代码示例,展现云原生应用的构建过程,让读者领略到云原生技术的魅力所在。
|
20天前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
22天前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
20天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
1月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
43 3
|
1月前
|
Cloud Native 持续交付 云计算
云原生架构的演进与挑战
随着云计算技术的不断发展,云原生架构已成为企业数字化转型的重要支撑。本文深入探讨了云原生架构的概念、发展历程、核心技术以及面临的挑战,旨在为读者提供一个全面了解云原生架构的视角。通过分析Kubernetes、Docker等关键技术的应用,以及微服务、持续集成/持续部署(CI/CD)等实践案例,本文揭示了云原生架构在提高应用开发效率、降低运维成本、增强系统可扩展性等方面的显著优势。同时,也指出了云原生架构在安全性、复杂性管理等方面所面临的挑战,并提出了相应的解决策略。
|
23天前
|
弹性计算 运维 Cloud Native
云原生架构的崛起与未来展望
在数字化转型的浪潮中,云原生架构凭借其高效、灵活和可扩展的特性,正逐渐成为企业IT战略的核心。本文旨在探讨云原生架构的定义、关键特性、实施优势以及面临的挑战,同时展望未来的发展趋势。通过深入分析,我们期望为读者提供一个关于云原生架构全面而深入的视角,助力企业在云计算时代做出更明智的决策。
32 3
|
24天前
|
Cloud Native API 持续交付
云原生时代的微服务架构设计
随着云计算的蓬勃发展,云原生概念逐渐成为IT行业的热点。本文将通过深入浅出的方式,介绍在云原生环境下,如何设计一个高效、可扩展的微服务架构。文章不仅涉及理论概念,还将结合实际代码示例,帮助读者理解微服务架构的核心要素和设计原则,以及如何在云平台上实现这些设计。

热门文章

最新文章