编者按
网络信息产业中,芯片被比喻为心脏,操作系统被认为是计算机的灵魂。二十年来,国内信息产业始终在“缺芯少魂”的困境中,中国在高端芯片行业缺乏自主创新能力,国产操作系统自研创新,不仅事关信息技术核心竞争力,更关乎国家信息安全。
以下内容来自腾讯服务器操作系统高级工程师陶松桥于4月16日“DIVE全球基础软件创新大会”演讲内容实录。
腾讯操作系统发展历程
”缺芯少魂”一直是我国信息产业发展的一大难题,“少魂”就是特指操作系统等基础软件发展比较薄弱。过去基础软件都是“拿来主义”,这种传统解决方式在给生态开发者们带来便利的同时,也桎梏了大家的自主创新能力,腾讯的操作系统研发也是从拿来主义到走到了自主创新研发的今天。尤其到云计算时代今天,操作系统向下适配多元化硬件,向上支撑多样化产品,其重要性和自主创新性更是不言而喻。今天我们一起来了解下腾讯操作系统的创新之路:三个时代,一个未来。
首先看一下腾讯操作系统的发展历程。在腾讯发展的初期,业务还比较单一,服务器数量也比较少,通过购买商业的Linux操作系统,就可以满足腾讯的业务需求,后来随着业务和机器数量越来越多,OS厂商的支持费用就越来越高,这时候业务也有一些定制化的需求,而OS厂商却常常无法满足。当遇到现网问题,厂商的支持也没有那么及时。在这种背景下,我们成立了操作系统团队,开始研发和运营我们自己的linux操作系统,也就是tlinux。我们知道操作系统包括用户态发行版和linux内核这两部分,腾讯在linux内核的研发投入上有近十年的时间,而用户态发行版主要使用相对稳定的CentOS进行定制开发。
随着公司开源协同战略的推进,以及产业互联网的需求,我们在2019年底对tlinux进行了品牌升级,取名TencentOS Server,并且对外正式开源。2021年,随着国内外供应链等大环境的变化,比如CentOS的停更,产业互联网的推进,我们开启了TencentOS Server Stream的研发,并且创建了OpenCloudOS社区,我们希望通过联合公司内外开发者的力量,一起共建中国的Linux发行版社区。
商业系统时代(2010年前)
从使用开源OS到购买商业系统
我们首先来看一下“史前世界”的时候,腾讯服务器操作系统的情况。
在腾讯发展初期,公司业务比较单一,服务器数量也很少,这种情况下,操作系统中的很多潜在缺陷基本不会爆发出来,选择开源操作系统就可以满足当时需求,并且也不需要花费额外成本。因此公司当时选择了免费且相对稳定的Slackware作为服务器操作系统。
随着公司的不断发展,业务数量和规模都在快速扩张,业务场景越来越复杂,服务器数量也在急剧增长。这个时候,开源操作系统中的稳定性问题开始不断爆发出来,经常会遇到一些宕机问题。随着业务场景增加,开始有业务对操作系统底层特性提出需求。这时开始,业务侧就亟需操作系统研发层的支持。但当时公司没有操作系统研发团队,因此,只能向能提供成熟操作系统平台和底层技术支持的OS厂商寻求帮助。2006年,公司通过招标引入商业操作系统——Novell的SuSE Linux 。借助Novell的统一技术支持,解决了当时面临的一些困难。
使用商业操作系统面临的挑战
但是在引入OS厂商技术支持几年之后,公司操作系统支持又面临了新的挑战:公司业务迅猛发展,运营了成百上千个自研业务,并有第三方业务的接入,服务器数量也随之飞速增加。快速发展的业务就导致业务场景更加复杂,在操作系统平台的稳定性、性能和底层特性支持方面又有了更高的要求,这也与商业操作系统间逐渐产生了矛盾。这些矛盾和挑战主要表现在如下几个方面:
首先是运营需求:生产环境下的故障解决是否及时,直接关系到业务的竞争力和收入,而与厂家沟通无法做到及时有效。同时,操作系统平台的稳定性都是相对的,OS厂商更多考虑的是通用客户的需求,无法专门针对公司业务提供稳定高效的底层OS平台。
第二是特性支持:业务有时需要深度定制Linux内核,而商业Linux不允许改动代码。比如,当时的开放云平台和搜索的T-Borg需要cgroup和container特性,而当时的SuSE 10不能提供,SuSE11支持,但是运行又不稳定。
第三是运营成本:商业Linux一般按“每服务器每年”收费,随着服务器数量的迅猛增长,操作系统成本也随之激增。
最后是运营风险:如果公司所有操作系统都依赖某个操作系统厂商,操作系统运营是存在潜在风险的。
自主运营时代(2010.6-2019.12)
研发Tlinux内核
不是一家人,不进一家门,只有自己人才会急自己人之所需、急自己人所想,基于以上面临的种种挑战,自研操作系统就显得很有必要了。
2009年公司组建了操作系统团队,专门去负责公司服务器操作系统的研发与运营支持工作。自研操作系统,并不是说操作系统所有的一切我们都从头做起。我们有开源社区和开源OS厂商的操作系统可以利用借鉴,站在巨人的肩膀上起点更高,没必要重复发明轮子。因此最开始,我们使用的还是SuSE商业发行版,只是在上面开发我们的linux内核定制,取名为tlinux。我们研发的内核是基于社区longterm版本,结合公司业务需求和使用场景,进行了一些定制。
Tlinux发行版
随着业务需求的进一步增长,仅仅定制化内核已经不能满足很多业务,比如SuSE10的软件版本较低,而业务要求使用高版本软件,然后用户态的一些配置也需要修改。因此,我们也开始研发tlinux发行版,同很多大型互联网公司一样,我们也是基于开源的CentOS系统,然后进行定制,升级,裁剪,调整,添加等工作,比如删减我们不需要的组件,添加我们需要的配置,agent代理,升级若干软件包等。这样就形成了我们的tlinux发行版本,内核仍然使用的是我们的tlinux内核。
在这个时期,随着Centos版本的演进,我们相继发布了tlinux1,tlinux2和TencentOS Server3版本,内核研发方面,相继发布了四个大版本,从TK1的2.6.32到TK4的5.4版本,这里面发行版和内核也有一些组合版本,比如TencentOS Server2版本,可以安装不同的内核版本,从3.10到4.14,甚至到TK4的5.4版本。
从2010年tlinux第一个版本的诞生,到2020年第三个版本的发布,十年时间,我们研发的操作系统的安装量从0增长到了2020年200万台的级别,有效的保障了腾讯海量业务的稳定高效运行。
运营系统自主建设
面对百万级别如此巨量的服务器,运营成了一大难题。为此,我们也开发了一些运营系统来管理我们的服务器OS。比如我们研发了宕机自动分析系统,虽然我们的系统可用率很高,但是服务器基数达到百万级别,每周还是会有上百台机器发生宕机,如果一台一台去分析宕机原因,那将非常耗时耗力,因此,我们研发了宕机自动分析系统。
这张图是宕机自动分析系统的处理流程,可以看到,在机器因系统问题宕机后,会进入第二内核,通过kdump服务生成vmcore,然后自动重启。机器重新启动之后,系统上的agent会自动检查并分析vmcore,然后将分析诊断结果告知OS开发人员和机器负责人。比如机器负责人会收到这样的邮件,您的机器在什么时候发生了宕机,宕机原因是因为低版本内核中的某个空指针所致,或者是因为内存,cpu等故障所致,然后会给出修复建议,比如升级内核,安装热补丁,更换内存条等。如果是未知问题,或者无法自动分析宕机原因,OS开发人员将介入,再手工分析宕机原因,然后给出修复补丁,合入新版本内核,并针对存量内核版本制作热补丁修复。通过这样的一套宕机自动分析系统,能够大大提升我们的运营效率,并且及时发现内核bug,提升系统的稳定可靠性。
此外,我们还开发了TManager运营管理系统,在这个系统中,我们实现了镜像自定义制作,软件版本监控和告警,以及监控系统健康状态,故障处理,主机管理,批量下发任务,制作热补丁,漏洞管理等功能。通过这样一套管理系统,OS开发和业务能够很好的查看系统的状态,并对一些问题及时查看和处理,保障操作系统的安全稳定运行。
创新研发时代(2019.12-)
十年操作系统自主运营经验,让我们对OS产品研发有了更深厚的底气和扎实的技术基础。
2019年底,我们对外开源了我们的操作系统产品,并将我们的研发成果进行了开源。在2021年,我们从发行版定制转变为发行版自主研发,这也是OS研发人员一直以来的梦想,也就是不再基于开源linux发行版,而是基于upstream开源社区,从头开始构建TencentOS Server Stream版本,并基于Stream版本,研发TencentOS Server商业版本和OpenCloudOS这个社区版本。OpenCloudOS社区是一个开放中立的linux开源社区,我们希望建立一个开放平台,联合公司内外开发者力量,共同打造绿色节能的云原生底座,共建全场景的多元化应用生态。
云边端整体布局
互联网的下半场属于产业互联网,要实现人和设备、设备和设备、设备和服务的连接生态。
作为整个公司业务的基石和服务器的灵魂,腾讯操作系统也完成新一轮的“变革”——从单一的服务器操作系统拓展到覆盖云数据中心、边缘和物联网终端,确立了提供基于业务场景化的全栈OS布局。
可以看到,TencentOS Server是云服务器操作系统,面向云数据中心的,其主要特性就是高性能和安全可靠。TencentOS Edge是边缘计算操作系统,能够将云上计算能力边缘化,而TencentOS tiny作为物联网终端操作系统,其特点就是小而精,比如低功耗,低资源占用,模块化等。
通过社区力量共建OS
新时期,我们通过社区力量共同研发下一代操作系统。首先我们基于开源上游社区,开发社区的上游L1版本,然后通过社区力量共同开发稳定版本,稳定版本研发完成,我们会用于生产环境,经过海量业务的部署验证,再次提升社区版本的稳定性。并且,我们也支持OS厂商依据社区稳定版本,去构建稳定的商业版本,也支持基于社区稳定版本去构建一些衍生版本。
OpenCloudOS社区在去年也发布了百川计划,其目的就是向生态伙伴发出激励邀约,通过培训认证体系建设,吸引行业的优秀人才和项目,去适配OpenCloudOS社区版本,比如向下吸引硬件厂商提升系统的兼容性,向上与中间件和应用厂商推进OS的适配。
技术创新
在技术创新方面,我们也做了很多,下面这个图是整个操作系统的框架图:
内核方向,我们一方面适配了众多架构的CPU和硬件,同时也做了很多优化,比如CPU调度优化,内存管理优化,网络优化,I/O优化等,我们还开发了宕机自动化分析和热补丁功能。虚拟化方向,我们知道KVM是云计算的底座,腾讯对KVM的代码贡献多年位居中国第一。此外,还开发了悟能能耗优化和如意资源调度两个功能。虚拟化和容器方面,我们做了很多原创的云原生特性和优化。在运行时和编译器方向,我们有Kona JDK,有Tencent Compiler,其中,对OpenJDK的贡献,已经连续四年维持中国第一,全球领先的地位。
面对不同使用者,腾讯操作系统创新体现为四个方面:
对企业用户提升云场景资源利用率,降低数据中心能耗;对管理员来讲,达到高效智能运维,无损升级,快速部署和迁移;对开发者,支持IDE高效开发,进行典型应用高效部署;对OS开发人员来说,贡献上游十分重要,腾讯在虚拟化/编译器/调度和云原生相关贡献了很多代码。
最绿色的OS-如意:全场景混部技术
TencentOS Server在助力碳中和方面取得的成绩。早在2021年1月,腾讯宣布启动碳中和规划,成为国内首批启动碳中和规划的互联网企业之一。TencentOS Server在节能降耗这一领域取得突破,推出 “如意”这一大规模全场景混部产品。
随着云的快速发展,IDC的规模不断扩大,投入越来越大,有研究显示,服务器成本是占比最大的一块,高达69%,每年各互联网厂商在服务器这块的支出都很大。与此形成鲜明对比的是,服务器的平均利用率却很低,通常业界的cpu使用率只有15%左右,处于一个很低的水平。一方面花费高昂购买服务器,另一方面这些服务器资源却没有得到有效的利用,这就造成了巨大的资源浪费。
如何提升服务器资源使用率,降低能耗,就是我们研发如意这款大规模容器集群混布产品的初衷。如意包括cpu、网络、IO、内存四大模块,针对这四种服务器资源进行QoS,能够将用户的在线、离线业务部署到同一台服务器上,既能保证在线业务的服务质量,又能有效提升资源利用率。目前已经在腾讯内部的微信,广告,游戏,视频转码等多个业务大规模落地,也有多个外部合作伙伴使用。比如按混部3万台子机进行测算,CPU使用率能够从15%提升到45%,每年可节省电能2亿度,减少碳排放达到8万吨。有力践行了腾讯的碳中和规划和目标,为绿色科技贡献自己的力量。
最绿色的OS-悟能 :集群级能耗优化
仅仅实现混部还不够,为了进一步降低数据中心能耗,我们开发了悟能系统。悟能是一套集群级能耗优化方案,首先它能够对集群进行能效评估,然后动态去启停CPU的节能模式,在部分CPU利用率空闲的时候,让其进入深度睡眠,以此达到节能的目的,在有任务的时候,及时唤醒更多的CPU去服务。
此外,悟能还支持动态迁移空闲进程,如果cpu负载较低,可以将任务统一集中到某几个CPU,剩余的CPU开启节能模式。悟能这套系统通过能耗优化,有力的降低了服务器的能耗,为实现碳中和同样做出了巨大贡献。
这里面其实有不少挑战的,对于短业务来讲,我们需要通过迁移任务来让更多CPU更长时间进这个深度睡眠模式来节能;对于短业务或长业务,当CPU能进入深度睡眠的时候,我们还要保证整机进程调度的时延,以及IO的这个时延,需要有及时唤醒的策略。
系统级能耗优化与全场景混部系统的支撑,让TencentOS成为国内最绿色节能的操作系统,并荣获了中国信通院授予的“2021年OSCAR尖峰开源项目及开源社区”奖项。
展望未来
作为一家大型科技公司,自主创新,必定是我们长期坚持的道路,一方面,要做我们自主可控的操作系统,保障OS,保障这个信息科技"灵魂"供应链的安全性;另一方面,我们会持续不断的创新,让操作系统这棵老树不断绽开新的花朵。其次,助力国家的碳中和战略,我们将持续优化操作系统的资源利用率,将TencentOS打造成绿色经济的OS。最后,作为操作系统开发者,力争上游,上游优先是我们的使命,我们会同全球的OS开发者一起,不断贡献自己的力量和对开源社区的贡献。