QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

探索性能前沿,快手系统软件技术演进与资源效率优化

熊刚

  • 2023-12-27
    北京
  • 本文字数:5187 字

    阅读完需:约 17 分钟

大小:2.61M时长:15:11
探索性能前沿,快手系统软件技术演进与资源效率优化

作者 | 熊刚

策划 | 薛梁


服务器总成本是服务器总量和单价相乘,分两部分,一部分是通过提升资源利用率和性能优化来降低服务器用量,比如内核隔离与控干扰技术,GPU 虚拟化与混部技术来提升 CPU 与 GPU 利用率,通过微架构优化、内核优化、编译优化、基础库 / 框架优化、JVM 优化技术提升性能。另外一部分是通过引入新性价比更高的硬件来降低单价。总计为公司带来 10 亿级别的成本优化价值,ROI 在 10 以上。


整个项目成功的要点在于,形成快手独特成本优化方法论,抓住关键技术,借助公司关键战役进行创新突破,最大化系统软件价值。


在 12 月 29 日的 QCon 软件开发大会上,来自快手的基础平台部系统软件中心 / 系统软件负责人熊刚将在会议上分享利用系统软件技术来全面提升服务器资源效率实践话题。


在正式演讲之前,我们采访了熊刚老师,请他分享快手系统软件技术演进与资源效率优化经验。


InfoQ:简单介绍一下快手的系统软件。


熊刚: 如果把软件体系比喻为一颗大树的话,系统软件是“树根”,处于软件系统的最底层,连接硬件资源和上层软件,起到承上启下的作用。快手的系统软件包括 操作系统、编译构建、运行时(JVM)、系统诊断、系统观测 等方向,如下图所示。其中操作系统是最基础和核心的软件,是我国关键“卡脖子”核心技术之一。系统软件具有 技术密集轻资产规模大 等特点。



InfoQ:在您作为快手基础平台部系统软件中心负责人的角色中,服务器资源效率优化占据了怎样的位置?


熊刚: 快手系统软件技术对公司有巨大价值,通过系统软件技术演进给公司带来 10 亿级 资源成本节省,但价值不止于此,我以成本优化牵引系统软件产品演进除成本之外,在稳定性、开发效率和用户体验、业务架构升级等多维度带来全方位收益。主线还是我们的领域产品技术演进,这才是系统软件的核心竞争力。


具体来说,要做到高成本收益,需将我们的产品技术扩大到高规模,这要求我们先把稳定性打磨好,否则上不了线,还需要把易用性打磨好,否则业务不愿意用,面向云原生架构,需将系统软件技术往云原生更友好方向变革,以一带 N,这个一就是“成本优化”,成本优化不是唯一目的,更是一个牵引力


InfoQ:在组织中,哪些角色或部门应该特别关注性能优化问题?


熊刚: 站在公司角度,成本包括的内容比较多,本议题聚集在服务器成本(如下图红色部分),主要指通过技术手段优化服务器成本,不包括运营以及商务侧的手段。



前面提到的后台系统的 4 层架构,几乎每一层都涉及到服务器成本优化,这对技术团队而言是一个非常难得的历史机遇,可借势加速推进产品技术的演进。


InfoQ:您有什么方法来打造有竞争力的系统软件产品?


熊刚: 我通过 “三合一” 策略来打造系统软件产品,用 JVM(我们内部称为 KBOX)举例:近年来,JDK/JVM 社区在加速演进,新版本在稳定性、性能、能力上持续优化迭代,若能直接将这些新成果应用到快手,相当于聘请了 1000 多 JVM 领域专才来免费为我们工作,加上向行业佼佼者学习,并基于此做创新。如果把产品当作一个物种,吸取社区和行业的精华类似基因传递,在此基础上做创新突变,更好适应快手场景,以此演化出有竞争力的产品,如下图:



InfoQ:如何将这些技术推向平台和业务?


熊刚: 前面是讲如何打造出一个有竞争力的系统软件产品,我用 “3 个借力” 来加速落地,产生实际价值:



实际上系统软件不掌握服务器资源,服务器资源都掌握在平台或者业务手中,我们需要和平台、业务形成良好的合作共赢关系,一个方案往往需要多方面的考量,满足各方的诉求,达到全局最优,达到双赢甚至多赢。


InfoQ:如何突破成本优化可持续问题?


熊刚: 实际工作中,一个普遍的认知是 “成本优化这件事不太能持续,越到后面难度越大,优化空间越小”,这句话我认为对也不对,针对某个阶段的一个点而言,确实如此,优化的边际效益逐步下降,但不对的是:一方面我们可以 把“点”扩展成“面”“面”进一步扩展成“体”,这里的空间就非常大了;另外,业务平台一直快速变化,新的阶段,会出现新的矛盾和新的优化空间,从这个意义上说 优化是永无止境的。这里我举例说明成本优化如何从点到面来突破。


整体上分为 2 大阶段,1.0 阶段和 2.0 阶段,前面 1.0 阶段 我形象称之为 “横向出发”,拿着锤子找钉子,从我们的系统软件产品出发去平台、业务找落地场景,2.0 阶段 我称为 “横竖结合”,在前者基础上,也需要加上竖向,从业务出发找到钉子,需要我们来造一个合适的锤子横竖结合更加完备,满足了不同阶段的增长空间,如下图:



实际上快手系统软件资源成本优化分为 4 个小阶段,如下图所示,形成了体系化的方法,有意思的是这个过程形成了 快手特有的成本优化模型:如“三维吞吐模型”,“成本优化模型”,简单而深刻,往往能在关键时刻力挽狂澜。



InfoQ:在实施内核隔离与控干扰技术的过程中,您面临哪些主要挑战?您是如何克服这些挑战的?


熊刚: 内核隔离与控干扰是为大规模混部服务的,混部的本质是通过资源共享提升部署密度,从而降低资源用量,类似道路可以允许机动车、自行车、行人共同使用,在线服务有明显的潮汐特性,低峰期有大量闲置资源被浪费,为了充分利用这部分闲置资源,可以在低峰期运行离线任务,以此节省服务器资源,提升整体 CPU 利用率,以 1000 万核为例,利用率提升一倍,意味着大致增加 1000 万核的供给。

但在内核隔离与控干扰技术突破之前,混部就像是一条原始的泥土道路,随着机动车、自行车、行人密度增加,相互干扰,事故频发,通行效率也大大降低,这显然不可行,急需打造一条现代化的公路,将这 3 类相互隔开,减少干扰,资源不足下,优先保障高优群体,比如公交车道。


对应到物理机器,在线和离线容器之间共享同一台物理机,相互争抢资源,产生干扰影响业务可用性和性能,阻碍混部和利用率提升,这是核心挑战,解决该问题的核心思路是建设可观测系统度量干扰程度,在内核将物理资源按容器粒度隔离以及制定优先级降低干扰率,结合容器云的调度编排能力解决干扰问题,以此带来成本、稳定性、效率、用户体验的多维度收益。


InfoQ:业界在这方面有哪些通用的解决方案?您是否进行过方案比较,您的方案有何优势?


熊刚: 业界也有类似的内核隔离技术,但我们 不完全照搬业界方案,按前面提到的“三合一”方法,在吸收社区和行业优点的基础上做创新,比如快手的调度优先级方案,业界采用双红黑树方案实现在线对离线的绝对抢占,而快手更彻底通过双队列(含双红黑树)实现在线对离线的绝对抢占,离在线各自独立的负载均衡机制,避免在线堆积到少量核上,降低在线间的干扰


再比如我们创造性提出 “控干扰三角”组织阵型(系统观测 ->系统诊断 ->内核隔离),能更快、更稳推进混部技术的推进,我们对线上的 干扰做了持续的观测,为混部利用率提升保驾护航,整体方案如下:



实际上我们内核隔离与控干扰技术的研发效率、上线规模、功能完整性、性能在国内都是 TOP 级别。


InfoQ:在提升资源利用率的过程中,您考虑了哪些关键因素?


熊刚: 资源利用率提升是一项目非常复杂的工程体系,总体上分为供给侧和需求侧,影响供给的关键因素有:上面提到的干扰问题、存核比(内存容量与 CPU 核心数比)问题、宽核比(内存带宽与 CPU 核心数比)问题、调度问题、资源池分散等问题;而需求侧,需要提供更低的成本、解决好稳定性、易用性等问题,需求方才愿意把离线混部进来。


实际情况下,这里的因素相互牵制,要复杂得多,正向去梳理关键问题犹如一团乱麻,得另辟蹊径,基于我常用的成本优化第一原理“成本优化模型”,反向思考,假设下掉一台机器(提升利用率),哪里会出问题?如此反复逆向推演,可以把利用率提升的整个关键路径推演出来,这是一种逆向思维方法,可以大大简化问题的复杂度,加快利用率提升步伐。前面提到的内核隔离与控干扰就是利用率提升第一个要解决的关键问题。


InfoQ:在进行技术创新时,您认为需要注意哪些问题?


熊刚:创新是第一动力,这对于一个技术产品的演进同样如此,我有几点关于创新的经验,一是,创新往往不是规划出来的,规划一般是自上而下的,而创新往往是自下而上的,这两者实际上都不可或缺,但要避免自下而上的创新工作被自上而下的规划所挤压,我在做 2~3 年规划的时候,特别强调,不要被规划所束缚,日常工作也会预留足够时间做规划之外的事情。


二是,从第一原理出发创新更加高效,埃隆·马斯克经常提到他基于第一性原理创新。


三是,工程创新不同于理论创新,需要基于实际的应用场景出发。创新存在风险,需要平衡好短期和长期。团队需要有中短期能支撑团队生存的价值,同时也需要保留一部分力量来做未来的事情,以此来保持可持续性。


InfoQ:在 GPU 虚拟化与混部技术中,您是如何应选择技术方案的,考虑了哪些关键因素?


熊刚: 行业 GPU 虚拟化技术通常分为 2 大类,一类是在底层操作系统内核实现,另一类是在上层利用 CUDA/MPS 技术实现,这 2 类各有优缺,上层实现方案相对容易,缺点是缺乏故障隔离能力、难以做到对业务透明、平台维护成本较高、性能略差,在内核实现则几乎相反,从业务诉求出发,我们选择了内核实现的方式,挑战更大,但综合更适合快手。设计了如下的架构:



InfoQ:虚拟化可能带来额外性能开销,您是如何最小化这种影响的?


熊刚:我们在内核层实现 GPU 虚拟化技术,不会带来显存的损耗,会有 3% 以内的算力损耗(由于实例的切换,可能会带来一些 GPU 侧的 cache miss),以及少量 CPU 开销,主要用来调度不同实例。


InfoQ:在微架构优化、内核优化、编译优化、基础库 / 框架优化、JVM 优化等方面,您印象中最大的挑战是什么?


熊刚: 我印象比较深的是,一个是方法论的问题,前面提到的内核隔离、GPU 虚拟化等技术主要还是提升机器的利用率,平台一般把提升利用率作为北极星指标,但这里提到的一序列优化手段,实际上是降低机器利用率,和平台目标冲突,早期这些优化手段并不受平台欢迎,但后来我们提出了“三维吞吐模型”来统一 3 个维度(提利用率、提指令吞吐、降复杂度),大家在不同维度发力,本质都是为更高维度的吞吐来做功,并不矛盾,反而统一起来了。


另一个是 JVM 优化我们今年开发行业首个“Java17 透明协程”技术,能让业务在不改代码的情况下,自动将原来的线程模型切换为语言级协程,大大提升吞吐,这项技术非常具有技术挑战,开始并不确定能否研发成功,在开发过程中遇到的难题不断,但最终这些难题被我们一个个攻克。


InfoQ:您是否探索过利用机器学习辅助完成性能提升?如果有,可以分享一些见解吗?


熊刚:我过去有 AI 的经验,我认为 AI 可以重塑系统软件领域系统软件领域有海量的底层运行数据,这些数据如果靠人工经验去分析总结非常低效,甚至数据维度多到超出人脑能力范围,必须借助 AI 工具,把这些数据驱动起来,可释放出巨大的价值,比如在云原生场景下,某几类应用共同运行在一台物理机上能获得更佳的性能,我称为应用之间的亲和;某些应用对物理机类型也有特殊的“嗜好”,跑在特定硬件上能获得更佳的性能,我称之为硬件亲和性,等等,这些工作很适合用 AI 来做画像,而非人工经验。


当然在性能之外,在一些问题诊断方面也可以通过 AI 提效。


InfoQ:您是如何平衡硬件优化和软件优化以共同提升性能的?在降低硬件成本的同时,您是如何确保系统性能不受影响的?


熊刚:新硬件的引入需要软硬件协同,比如在引入 AMD 新一代产品,软件侧和硬件侧一起踩过大大小小几十个坑,以软件举例,需要将内核从 4 系演进到 5 系,再比如面对 AMD 核心数暴增,我们需要对内核做锁优化,才能减小性能损耗,另外在高负载下会出现偶发性夯机,经过非常艰难的定位,发现是社区内核的一个 Bug,我们首个发现并解决这个问题。


当然光有内核做支持还不够,需要系统软件其他团队,如微架构层面、编译器层面通力协作,甚至上层平台一起,才能把新硬件的算力充分发挥出来。


最后,我们在持续招募系统软件领域人才,欢迎加入快手系统软件,一起攀登技术高峰。联系方式:xionggang@kuaishou.com

嘉宾介绍


熊刚: 快手 基础平台部系统软件中心负责人


擅长海量服务、高稳定高性能服务架构、系统软件技术。2010 年硕士毕业就职腾讯:先后深度参与或主导 QQ 后台几次架构升级、腾讯视频云质量优化,以及 CV 技术 B 端落地。2019 年加入快手,参与央视春晚项目 (A1),负责应用启动、过载保护、核心配置系统设计和落地,死保中的死保,0 事故。2021~2023 年之间,从 0 到 1 建立系统软件领域,包括操作系统、JVM、编译构建、系统诊断、系统观测、性能优化等子领域。



活动推荐

明天!QCon 15 周年年终盛会,落地上海·中优城市万豪酒店,阿里云 CTO 周靖人中国科学院外籍院士、国际数据库专家樊文飞院士,英特尔大数据技术全球 CTO 戴金权等大咖会亲临现场分享大数据、芯片、架构等方向的前沿洞见。主题演讲将免费对外直播,前往 InfoQ 视频号进行预约吧~



更有 7 种精彩活动等你一起来玩!咨询购票可联系票务经理 18514549229。

2023-12-27 16:0910162
用户头像

发布了 181 篇内容, 共 96.4 次阅读, 收获喜欢 207 次。

关注

评论

发布
用户头像
该评论已删除
2024-01-02 11:12 · 北京
回复
这个只是一个现场活动的一个预热,我在现场听,挺不错,干货挺多。
2024-01-02 21:53 · 广东
回复
没有更多了
发现更多内容

ResNet-50 在 ImageNet-1k 上的实验笔记

毛显新

人工智能 神经网络 深度学习 卷积神经网络 PyTorch

双赞的一体机主板能应用到哪些行业?

双赞工控

全链路压测流量模型

FunTester

性能测试 全链路压测 FunTester 灰度分流 流量回放

对象存储手把手教五 | 数据存取与加密

QingStor分布式存储

对象存储 分布式存储 数据加密

程序员35岁后的发展,欢迎一起来讨论

hanaper

Python中使用定时调度任务(Schedule Jobs)的5种方式

Regan Yue

Python 调度 9月日更

vue3,对比 vue2 有什么优点?

华为云开发者联盟

Vue Vue3 vue2 diff算法 渲染API

Python基础综合练习1

在即

9月日更

Alibaba内部最新Java架构核心宝典 (全彩版小册开源)

Java 程序员 架构 面试 计算机

小白都能看懂的JVM知识,一文带你学会JVM内存模型!

华为云开发者联盟

Java JVM 内存管理 Java虚拟机 JVM内存模型

模块3作业

Ping

web技术分享| 前端秘籍之“易容”术

anyRTC开发者

人工智能 大前端 音视频 web技术分享

AD域是什么意思?有什么用?

行云管家

服务器 内网 AD域

小红书严惩刷量行为:如何才能优雅的种草

石头IT视角

阿里大牛肝出的443页TCP/IP协议趣谈笔记,竟然在GitHub标星27k+

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

牛皮了!阿里大佬总结的图解Java手册在GitHub火了,完整版开源中

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

什么是运维?怎样快速做好运维工作?

行云管家

云计算 运维 服务器 云运维

KubeVirt with YRCloudFile 擦出创新的火花

焱融科技

云原生 文件存储 虚拟化 高性能, 分布式存储,

金九银十涨薪50%,从默默无闻,到坐上美团L8技术专家(面经+心得)

Java 编程 程序员 架构 面试

浅谈百度阅读/文库NA端排版技术

百度Geek说

大前端 百度文库

意外发现GitHub 星标35k+ 435页网络协议深度笔记,出自华为架构师

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

SQL注入详解

行者AI

测试

DataPipeline助力国际知名物流服务商,打造供应链改革新样本!

DataPipeline数见科技

华为大神用前半生经验所写的SpringBoot全优笔记,现无偿与大家分享!

Java 华为 程序员 面试 计算机

发布半小时登上GitHub首页的Spring Boot实战笔记,竟是京东T8编写

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

用遗传算法进行智能排课,相信老师会很喜欢

华为云开发者联盟

AI 编码 遗传算法 算子 课程编排

Vite + Vue3 + OpenLayers 弹窗

德育处主任

大前端 地图 vite Vue3 openlayers

阿里内部进阶资料:24w字的Java面试宝典,竟然在GitHub霸榜月余

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

一萌妹子的面试经历,美团四面三小时,成功拿到Java岗offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

你的工作谁做主?

产品运营心经

工作效率 职场成长

恒源云(GpuShare)_GPU租用保姆级教程,助力深度学习训练!

恒源云

探索性能前沿,快手系统软件技术演进与资源效率优化_性能优化_InfoQ精选文章