移动端仍可深度探索的领域有哪些?点击看业内代表性技术方案及案例>> 了解详情
写点什么

腾讯成本优化黑科技:整机 CPU 利用率最高提升至 90%(下)

  • 2019-10-31
  • 本文字数:1671 字

    阅读完需:约 1 分钟

腾讯成本优化黑科技:整机CPU利用率最高提升至90%(下)

3.问题二,如何让离线高效的利用空闲 CPU?

那么就来看第二个问题,离线如何高效的利用空闲 CPU?因为当有在线的时候,离线无法获得 CPU,因此要让离线高效的获得 CPU,第一个需要解决的是,离线如何去感知在线剩余的算力?在线占用 100%的核上,是不应该调度离线过去运行的,因为离线一直获得不了 CPU。在线占用 60%与在线占用 10%的 CPU 上,应该调度不同负载的离线去运行。



离线如何高效的利用空闲 CPU?


因此,在线感知剩余算力很关键,那么怎么做的呢?我们最开始是如果负载均衡的时候,这个核有在线在运行就不调度离线过来,此种做法比较粗糙,波动很大效果不明显。因此我们对此进行了优化,离线算力算法如下:


(1)1-avg/T=离线负载算力


(2)avg 随之 T 不断衰减,过一个 T 衰减成原来的 1/2


(3)在线的运行时间不断加入 avg 中


直接看文字很难懂,举个例子;比如在线占用 CPU100%,T=1ms


那么离线算力=1-(1/2+1/4+1/8+1/16+…)=0 ,也就是说算出来离线的算力是 0,因此这个核上在线占着 100%的 CPU。


如果在线占用 20%的 CPU,T=1ms,那么离线算力=1-(0.2/2+0.2/4+0.2/8+…)=0.8,因此,可以迁移一些离线进程到这个核上。


另外,第二个是我们引入了等待延迟,用于优化进程负载的计算。为什么要引入等待时间呢?因为我们发现,如果用原来的算法,在业务限制某个 CPU 不让离线运行时候,这个离线进程可能无法被调走(比如说,四个 CPU,四个离线,限制一个核,按照原来算法负载是均衡的)。另外我们在测试中发现,离线在在线混部上来之后,离线的队列等待时间会增大,缩短离线进程在队列中的等待时间,是提高离线 CPU 占有效率的关键。因此,我们引入了队列等待时间,通过等待时间算出一个翻倍因子,从而在负载均衡的时候,将最应该被调度的离线进程及时调度到空 CPU 上运行。


四、新方案效果

目前 TLinux 团队混部方案的效果多个业务上都得到了验证,功能满足业务需求,在不影响在线业务的前提下,整机 CPU 利用率提升非常显著,超过业务预期。下面是几个典型场景的测试数据。


如下图所示,在 A 测试场景中,模块 a 一个用于统计频率的模块,对时延非常敏感。此业务不能混部,整机 CPU 利用率只有 15%左右,业务尝试过使用 cgroup 方案来混部,但是 cgroup 方案混部之后,对在线模块 a 影响太大,导致错误次数陡增,因此此模块一直不能混部。使用我们提供的方案之后,可以发现,CPU 提升至 60%,并且错误次数基本没有变化。




业务场景 A(a 模块)混部前后性能对比


在 B 测试场景中(模块 b 是一个翻译模块,对时延很敏感),原本 b 模块是不能混部的,业务尝试过混部,但是因为离线混部上去之后对模块 b 的影响很大,时延变长,所以一直不能混部。使用我们的方案的效果如下图所示,整机 CPU 利用率从 20%提升至 50%,并且对模块没有影响,时延基本上没有变化。




业务场景 B(b 模块)混部前后性能对比


模块 C 对时延不像场景 A,B 那么敏感,所以在使用我们提供的方案之前,利用 cgroup 方案进行混部,CPU 最高可以达到 40%。但是平台不再敢往上压,因为再往上压就会影响到在线 c 业务。如下图所示,使用我们的方案之后,平台不断往机器上添加离线业务,将机器 CPU 压至 90%的情况下,c 业务的各项指标还是正常,并没有受到影响。



C 场景(c 模块)业务混部前后性能对比


TLinux 团队从今年三月份就开始在各业务场景中进行测试灰度,期间遇到了各种各样的问题,不断的优化完善。验证的结果是:TLinux 团队混部方案在不影响在线业务的前提下,能够大幅度提升整机 CPU 的利用率,能为公司节省大量的运营成本。目前 TLinux 团队提供的公司内部内核,已经完全支持 TLinux 团队混部方案,公司很多业务已经开始使用 TLinux 团队提供的混部方案。


TLinux 团队简介

TLinux 团队承载了腾讯公司级的服务器操作系统、内核、发行版及虚拟化研发任务,专注解决 TLinux 系统、内核、网络、虚拟化平台及文件系统的问题。在历次的考验中,承受住了服务器数量飙升的压力,为腾讯提供了稳定、持久的服务。


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接:


https://mp.weixin.qq.com/s/dC-G74XtlnRzFTQmZdC19A


2019-10-31 08:00661

评论

发布
暂无评论
发现更多内容

远程办公带来的挑战和变化 | 社区征文

编程攻略

初夏征文

运营商动态路由的神器 :IS-IS 协议

wljslmz

6月月更 路由协议 IS-IS

影响软件公司开发价格的因素有很多,你知道吗?

开源直播系统源码

软件开发流程 直播系统 app源码 直播源码 定制软件开发

如何制定业务的故障分级标准?

华仔

架构实战营 故障定级 故障分级

如何在 Django 中创建应用程序?

海拥(haiyong.site)

django 6月月更

Linux开发_动态静态库创建与Makefile规则

DS小龙哥

6月月更

WebStorm注册码_WebStorm2022年激活永久实测有效

Geek_75f9e9

webstorm

一文掌握软件安全必备技术 SAST

SEAL软件供应链安全

网络安全 软件安全 SAST工具 SAST

还不知道npm私服?一篇教会你搭建私服并发布vue3组件库到nexus

Jianmu

ci 前端 npm Vue3 私服

实战 | 【男保姆式】教你打开第一个微信小程序

写程序的小王叔叔

微信开发 小程序开发 6月月更

JavaScript期约Promise

大熊G

JavaScript 前端 6月月更

数字化转型之数字资产知识库(springboot+es+vue+neo4j)

金陵老街

全文检索 知识图谱 Vue 3 spring-boot

【直播回顾】战码先锋第五期:深入理解OpenHarmony系统启动,轻松踏上设备软件开发之旅

OpenHarmony开发者社区

Open Harmony

企业知识管理系统应具备的功能

小炮

Java项目集成activity工作流,快速开发业务审批单据(低代码,敏捷)

金陵老街

敏捷 springboot Activity Vue 3 BPMN

C#入门系列(十五) -- 枚举

陈言必行

C# 六月月供

InfoQ 极客传媒 15 周年庆征文|你真的了解RPC和REST吗?

No Silver Bullet

Rest RPC框架 构架 6月月更 InfoQ极客传媒15周年庆

开发增效利器—IDEA辅助插件推荐

中原银行

开发 IDEA 插件 中原银行

【Python技能树共建】验证码实操2案例

梦想橡皮擦

6月月更

腾讯成本优化黑科技:整机CPU利用率最高提升至90%(下)_文化 & 方法_云加社区_InfoQ精选文章