一 、腾讯操作系统发展历程
TencentOS发展历经多年,从2010年开始真正自研,经历三个时期和三个大版本,目前已达到千万级节点,今年正式开启商业化。在技术层面已形成完整生态链,从上游版本到企业级商用版本,再到社区开放版本。当前主要版本是TencentOS Server3(缩写TS3),并服务至2029年。全自研版本TS4预计在2024年跟大家见面。
TencentOS的使命:经济、绿色的操作系统
首先介绍下数据中心的资源管理和能源管理的背景。
上图是数据中心的成本分布,服务器是数据中心最大的建设成本占69%。而数据中心的能耗层面,服务器是最大能耗占比接近一半(46%)。
目前服务器规模在迅速增长,每年增量几十万台。在耗电量上,数据中心耗电在整个社会用电量的占比也在持续增加,图中显示今年占比会接近3%,到2030年时预计达到5%。与此同时也面临很多问题。比如服务器的CPU利用率非常低,据统计,全球的平均CPU利用率还没超过15%(约6%~12%);电力能耗上,成本显示,闲置资源在能耗的占用也超过了50%。
从数据中心生命周期看,能耗费用占数据中心总成本的一半以上。当前中国耗电量今年接近2700亿千瓦时,到2030将达到4000亿规模。作为数据中心的核心资源即服务器资源以及数据中心能源的最终消费者,和服务器上业务应用的管理者,操作系统对数据中心的资源利用率、能源效率上都负有主要责任。因此我们认为打造一个经济、绿色的操作系统是TencentOS的一个核心使命,也是今天技术分享的背景。
二、服务器资源管理:UTE、QOS、ROI
这里分享一些对于资源管理的想法和思考。
面对数据中心核心资源-服务器资源,资源管理最核心的三个要素是服务器资源的利用率即UTE;这些资源给应用提供服务,叫资源服务的QOS,资源投入成本产出比即ROI。具体体现在算力资源、内存、存储等。
这些资源主要面临以下问题:
CPU层面,当前服务器核数持续在增加。但具体到每核上,现在的服务器还没有提供大核小核配置,并且整体上大核利用率不高,随着云原生场景增多,任务的复杂度、部署密度越来越大,任务间的干扰问题也一直存在。
内存层面 ,内存资源需求数量和内存密集型应用比例持续上升,内存里大量的冷数据、不活跃的数据也占相当大的比例。
存储上 整个磁盘的容量、弹性、以及可扩展性是当前面临的主要问题,数据安全以及上面提及的lO模型也越来越复杂,资源竞争问题日益突出。
服务器资源管理相关技术现状
接下来,了解下当前资源管理技术的现状和发展。
首先是CPU,业界通常做法是基于CFS算法做优化,在分组控制上做的更灵活。同时在任务调度平台,做分时段错峰混部,使整个CPU利用率更高。像谷歌的Autopilot,就是根据整个资源以及使用情况调整分配,做任务调度。这种方案在机器负载规模不是很高的情况下,表现是ok的。但如果有突发或者高负载的情况,就会出现干扰的问题,需要通过任务平台去做调度或迁移。
在内存管理上,业界比较关注内存的多层级支持,现在有相对廉价,性能还不错的设备出现,可以做备份来降低成本。同时在内核里的一些经典技术,比如SWAP,近些年在社区也慢慢受到重视,这得益于现在的设备性能越来越接近内存,可以唤醒这个老技术(SWAP)。硬件也有非常大的变化,最近在CXL的一些技术,比如Promotion/Demotion内存间直接移动的平衡方式,提高性能。日新月异的新硬件,在提高内存设备利用率上给了很多想象空间。
IO管理方面,在传统的存储栈中,面向整个存储栈层面的开销、成本都过高。同时现在有很多数据都是远端存储,放到云存储的一些节点上,带来数据安全性问题,用户在安全方面的需求倍增,这些在原来的存储技术栈里做的不多。在整个lO带宽的管理、分组控制方面,当前还存在带宽浪费以及隔离精准性的问题。
服务器资源管理更多技术实践
这里也有很多同行和企业做了很多实践,以下分析两个案例。
【方案一】
资源成本管理,提升UTE&ROI。这种方案通过观测用户请求的资源数量与它实际使用的资源之间的数量及额度之间的差异,给用户建议值,可能远低于用户预购买的资源值,通过推荐指标减少购买成本,提升资源利用率,直接降低用户使用资源的成本。当需要时,可以做到很好的扩缩容,通过动态监控,给用户提供合理建议。
【方案二】
目前,越来越多厂商都在用内存分级方案,提升整个内存效率。举个例子,某厂商的内存分级方案,做了内存冷数据下沉。根据公开资料显示,可节省其20%~30%的内存,同时保证业务性能没有下降。
服务器资源管理增强技术探讨
【CPU层面】
当前的CPU管理会结合任务平台以及CPU调度系统本身。在任务平台层面,关注任务带来的集群负载监控,包括资源画像等。这里不仅指传统的CPU,也包括算力,比如GPU、CPU可共享的商业资源,会对整个资源有一个精准的描述。在任务平台里有项非常重要的工作叫做干扰管理,它会考虑一个节点上的多用户任务干扰,是一个核心调度指标。
算力资源管理和调度层面,在现有技术基础上可以做些工作:首先提供QoS,提供算力资源服务的多级分类。因为不同业务层对算力的敏感度、时延不一样,所以会有多种优先级定义;优化现有分组控制,比如静态分组,全share的分组,混合组,虽然资源本身分优先级,有一些资源是独占的,有些资源是共享的,然后形成混合的概念,一个组里形成一定比例,实现比较好的弹性。
在多级资源之间,以及多种级别的QoS / SLA(Service-Level Agreement,服务级别协议)之间,做不同类别的负载均衡,但如果把所有任务公平地去做负载迁移、调度到每个CPU上,会带来很多问题。所以当提供不同的SLA,对应的负载均衡也要做多级处理。同一级之间做均衡,不同级之间有优先级差异,甚至可以突破原来公平调度的瓶颈,做到绝对抢占。这里可以尝试去做任务感知,不仅是用户告诉我们他是什么样的模型,我们在调度层面可以去感知他们。
【内存层面】
内存层面,要给应用提供更好的服务,做到更高效的管理,无论是资源还是业务之间的差异,要针对性提供服务。具体到内存,从分配、回收各层面,包括在极端情况下OOM(Out Of Memory,内存溢出),也可以做优先级处理。尤其在内存管理系统,要时刻关注当前内存压力,分析压力做对应处理,比如做多级冷热数据监控。传统意义上内存分为两部分,活跃与不活跃,但这种判断标准比较粗暴,所以需要有多级优化。更重要的是判断多级冷热之后,可以做内存多级融合。冷数据可以下沉到backing设备(备份存储设备),不断下沉。
【存储设备方面】
存储方面,现在业界也出现了很多高性能的IO框架去应对设备越来越来越高的性能,把性能发挥出来;在带宽方面也有更精准的隔离技术,比如多层设备透明卸载,腾挪出空间。冷热分离过程,对于一些专用设备如存储设备,时间差异化较大,我们用一套路径、一套协议栈管理这些存储空间,我们认为这种通用方案无法最大化设备性能和性价比。对于这种设备,可以在服务器层面做设备专用路径管理,比如在访问某些存储节点时,有专门前端做数据处理,包括安全处理,最大化设备性能。实际上存储系统里,面对异构化,可以加强在管控、平台,包括上层的一些框架以及设备的异常追踪。
TencentOS的资源管理技术发展历程
七、八年前,TencentOS第一代采取比较传统的分时错峰利用,优化已有分组控制技术,比如高优补偿时延的控制,降低干扰率,有一定效果,但整体资源利用率提升有限,需要匹配更多场景。
第二代,TencentOS加入资源QoS系统,实现全时段在业务机器上做更多任务补充、部署,特别是结合容器平台,能够做到相当低的干扰率,效果体现在不同类别上,比如有算力偏离性任务的混部层面效果是最好的。同时在算力CPU层面做了更优管理,包括网络带宽、存储、内存都有完整的优先级定义,经过这些管理方法,实现了利用率的大幅上升。
第三代突破了前一阶段,有些业务场景的SLA没有那么大差异。我们实现了多级SLA的支持,包括弹性调度,同时通过工具给上层平台提供更多当前系统的负载数据,给予更多策略支撑,实现腾讯全业务场景支持。
第四代,更关注业务本身,理解业务,资源层面重点移到整个资源多级融合的管理上,关注资源本身成本。
TencentOS的资源QOS系统
首先TencentOS的资源QOS系统已经是一个完整体系,我们在上层的任务调度平台实现各种类型的业务调度,预测和监控当前资源,通过任务迁移、作业驱逐来解决冲突问题;在资源管理层面,已经实现非常低的干扰率,保证高优作业质量,同时给上层平台提供了很多数据。
数据效果非常明显,可以看到在一个QoS典型场景下,可以提升60%的CPU利用率,同时业务时延却没有很大变化,基本上无感知。比如在lO系统方面高优作业任务,时延得到充分保证,区别高低优业务时延,保障高优IO时延。
TencentOS的内存UE系统
内存UE系统。前面讲到,我们会做一些内存的多级融合管理,把内存里的数据做一些动态的基于页面本身冷热频率的控制,换到其它设备层面,是一个多级设备;同时基于cgroup的控制,支持分级下沉的分组控制。越冷的页面下沉越快,可直接跳级,同时支持最新的CXL协议。从实际效果看,比业界一些方案还能节省接近20%的内存,效果相当好。
三、能源管理:能源感知业务调度
在能源管理上,首先回到为什么要做这个事情?很多人不理解,操作系统怎么会涉及到内核,能源管理这一层面?
数据中心能源管理:社会价值与商业价值
2020年国家提出在2030年要实现碳达峰,2060年实现碳中和。我们要尽量推进,制定具体计划和指标。对于数据中心,绿色、低碳系统是公认的核心竞争力,作为操作系统的核心管理者我们肯定要参与。从当前数据中心包括IaaS层,规模增长非常迅速,到达千亿级市场。数据中心层面,光电力消耗成本就已经千亿级别,如果我们能够做到10%的节能,意味着收益可达百亿级,十分可观。
数据中心能源管理现状分析
【PUE】
提到数据中心低碳、节能,首先想到是如何降低数据中心现在的PUE。PUE即IT设备包括服务器、网络、存储设备,设备本身耗能占整个数据中心耗能的比例。
【服务器能耗】
常见做法包括提升机房制冷效率,把数据搬到比较偏远较寒冷的地方,降低制冷消耗。这种做法确实能够有效降低能耗,问题是地理偏远带来的建设成本增长非常多。在能源管理方面,除了关注电能,还可关注其他方面,比如碳管理或其它类型能源,包括再生能源,如水资源,现有系统可换成液冷系统,但这对水资源的消耗也会持续增加。
目前更多是从能源的供给侧解决能耗问题,使额外消耗更少一些。也有其它解决办法,比如从消费侧节能。
消费侧是服务器上运行的业务应用层面,我们可以从服务器层面想办法。目前服务器整个硬件、平台,包括各种部件都提供了节能能力,CPU、内存、磁盘、GPU等可以做频率控制。实际这些设备提供的能力在落地时往往都非常困难,因为从硬件机制层面提供能力,往往没有考虑具体的业务场景,会对业务产生影响,没有办法对业务透明地管理这些硬件。一个典型案例,比如对CPU进行频率调整,业务性能会直接受到影响,所以很多这类场景下我们会把关闭节能能力。因此在资源管理上,我们要提升服务器利用率,利用率提升了,自然减少了整个设备的资源数量,利用率提上来,减少设备增量。同时在内核层面,想办法提高节能降耗能力。
【业务集群】
大多数情况下,机器人调度器对能源来讲是无感知的,更多是站在资源的角度去考虑。业务集群节点的负载会更均衡,更多关注到把任务调度做到比较平衡。其实这在能源层面非常不友好,可能造成很多节点上的任务没有办法空闲下来。我们加上一些能源感知能力,产生新的模式,可以降低集群成本。这里需要在集群调度上做一些能源感知的资源调度。
能源管理技术方案目标
首先是兼容性,要自适应适配所有业务,对业务透明,具备在整个硬件架构层面的一个兼容性。可移植性要能够支持好不同平台。可扩展性需要支持不同场景,基于能耗角度去考虑,区分哪些是闲置资源,哪些当前负载比较高,制定不同策略。
在区分上面,我们做一些算力分割,一些是算力资源,还有一些属于闲置资源。类似在空间有限情况下,有的资源在休眠,有的在负载运行处理任务。这里会有一个动态调整过程,我们根据当前的业务场景的上级资源做动态调整。在集群层面,我们要做的是在这个资源数量以及单个节点上的干扰域阈值范围内,使任务形成一些聚集状态。比如高效状态,就是这个节点上已经处于高负载,上面的资源没有什么可用性,或者任务干扰率高到无法支持下发更多任务,这时这种节点不会再下发更多任务。
能源管理技术:能源感知的服务器集群调度
在节能方面,系统会停止所有的节能策略,但是对于常规节点,即上面有任务、有负载的节点,也有资源剩余,这时没有任何一个算力形成休眠状态。我们认为这种节点是可以下发任务的,处于高优状态。相对来讲,有些节点处于节能状态,算力已经进入休眠,也可以下发任务,那在优先级层面它就是低优状态。
对于这两类节点我们可以做空闲算力感知的调度,做一些聚集。还有一种情况是,这个节点上没有负载,这时可能所有算力都是空闲的,就处于相对热备的状态。当长时间没有负载状态,我们定义为冷备状态。对于热备,当这个节点要扩容,任务要来的时候,可以激活它自然下发任务,没有激活以前全部处于休眠,以最低频率运行。对于冷备来讲,可以直接关机。
我们这里已经重构内核里的功耗管理,做了更精细的能耗控制,完全应用了空闲算力感知设计,做到自适应业务负载,对业务透明。根据实测数据,对业务的性能影响小于1%。在极端情况下,我们系统也有一个自动退出机制,可以轻松应对突发请求的一些场景。
典型场景业务性能测试
上图是腾讯一个典型的数据库场景,在效果上可以看到,开启这个系统后,对性能影响基本可以忽略,甚至在部分场景下出现业务性能上升的现象。为什么会这样?我们分析是由于产生了一些任务聚集,可能减少了包括像case miss这些现象,导致有些场景可能本来偏低负载,但性能上升了。
典型场景业务能效收益
如上图所示,能耗从345W减到315W,节能30W,接近10%。以此计算,在腾讯全量铺开,每年可以有近6亿千瓦时的节能效果,相当可观。结合整个能源感知的集群调度系统,节省能源可以达到十亿级别。
四、技术规划与展望
TencentOS资源管理和能源管理技术家族
TencentOS在整个资源管理和能源管理上做了一些系统,比如重点关注CPU利用率特性的“如意”;服务器能耗管理系统“悟能”,实现整个服务器的能源管理;内存资源方面还有一个专门的系统增强管理“悟净”;还有面向应用的分析、调优的系统“火眼”,以及管理数据的“如莱”系统。未来还会继续深入研发新的特性系统。
前面更多是事后分析方式,基于当前业务场景不可改变的情况下,从资源管理层面或者能效方面做优化。但也有更好途径,比如提早介入业务,分析观察业务对资源和能源的消耗,同时分析当前节点上负载产生的资源消耗是否合理,评估出资源利用率的和能源方面的能效比,衡量定级,分析这种应用到底是高效能,还是低效能。如果很多都处于闲置状态,我们甚至可以进一步做运行时的动态管理,比如输出应用报告给业务或应用的开发者,明确告诉他在资源及能耗上有什么问题,还可以做哪些优化。这些优化可能就在不知情的情况下,优化掉了业务的一些性能浪费。这就是未来可以做的事情,相信这种方式可以使数据中心的资源效率和能源效率得到进一步的提升。
以上就是我的分享,谢谢大家。