前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >三个时代,一个未来 | 腾讯操作系统TencentOS创新之路

三个时代,一个未来 | 腾讯操作系统TencentOS创新之路

作者头像
腾讯 架构师
发布2022-04-28 09:13:16
1.4K0
发布2022-04-28 09:13:16
举报
文章被收录于专栏:技术运维分享技术运维分享

编者按

网络信息产业中,芯片被比喻为心脏,操作系统被认为是计算机的灵魂。二十年来,国内信息产业始终在“缺芯少魂”的困境中,中国在高端芯片行业缺乏自主创新能力,国产操作系统自研创新,不仅事关信息技术核心竞争力,更关乎国家信息安全。

以下内容来自腾讯服务器操作系统高级工程师陶松桥于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开发者一起,不断贡献自己的力量和对开源社区的贡献。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TencentOS Server
TencentOS Server 是腾讯云推出的 Linux 操作系统,它旨在为云上运行的应用程序提供稳定、安全和高性能的执行环境。它可以运行在腾讯云 CVM 全规格实例上,包括黑石物理服务器2.0。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档