写点什么

腾讯操作系统的创新之路

  • 2022-11-12
    北京
  • 本文字数:5132 字

    阅读完需:约 17 分钟

腾讯操作系统的创新之路

“缺芯少魂”一直是我国信息产业发展的一大难题,而“少魂”就是指操作系统等基础软件薄弱。“拿来主义”这种传统解决方式在给我们带来便利的同时,也桎梏了我们的创新。腾讯的操作系统研发也走过了从拿来主义到创新研发的道路。云计算时代,操作系统向下适配多元化硬件,向上支撑多样化产品,其重要性不言而喻。让我们一起了解下腾讯操作系统的创新之路。

 

分享主要分为四个部分展开:第一部分商业系统时代;第二部分⾃主运营时代;第三部分创新研发时代;第四部分展望未来。


本文整理自腾讯操作系统研发高级工程师陶松桥在DIVE全球基础软件创新大会2022的演讲分享,主题为“腾讯操作系统的创新之路”。


以下为整理内容。


大家知道 “缺芯少魂”一直是咱们国家信息产业的一大难题,而少魂就是指操作系统这些基础软件比较薄弱,曾经“拿来主义”这种传统解决方式在给我们带来便利的同时,也桎梏了我们的创新。

 

腾讯操作系统的研发也走过了从拿来主义到创新研发的道路,我们知道云计算时代,操作系统向下适配各种多元化的一个硬件,向上支撑多元化的一个产品,它的重要性创新性不言而喻。今天就让我们来一起了解一下腾讯操作系统的创新之路,我将从三个时代一个未来来给大家分享。

商业系统时代



早期腾讯的业务还比较单一,服务器数量比较少,购买商业的 Linux 操作系统就可以满足业务需求。后来随着业务和机器数量的不断增多,OS 厂商支持费用也越来越高,这时候业务也有一些定制化的需求。但是,OS 厂商常常不能满足这些需求,遇到一些问题厂商的支持也没有那么及时。

 

在这种情况下,我们成立了操作系统研发团队,开始研发和运营我们自己的 Linux 操作系统,也就是 Tlinux。我们知道,操作系统包括用户态和内核两部分,接近十年的时间,我们的研发投入主要集中在 Linux 内核,而用户态发行版使用的是相对稳定的 TencentOS 进行定制开发。2019 年底,Tlinux 命名改为 TencentOS  Server,并对外正式开源。2021 年,随着国内外供应链大环境的变化,我们开启了 TencentOS  Server Stream 的研发,并发起了OpenCloudOS社区



在腾讯发展初期,公司业务比较单一,服务器数量比较少,操作系统很多潜在缺陷基本上不会爆发,因此,我们就选择了开源操作系统,可以满足当时的需求,并且不需要花费额外的成本,所以公司当时就选择了slackware作为服务器操作系统。

 

但是,随着公司的不断发展,业务数量和规模都在快速的扩张,业务场景也越来越复杂,服务器数量也急剧增长。这个时候,开源操作系统的稳定性问题就不断爆发出来,经常会宕机,并且随着业务场景的增加,开始对操作系统底层特性提出一些需求,业务侧非常需要操作系统研发层面的支持。但当时公司没有操作系统研发团队,就只能找商业操作系统提供支持。2006 年,公司通过招标引入了 Noware 的商业操作系统 SUSE,借助于 Noware 的统一技术支持解决了当时面临的一些困难。

 

但几年之后,公司操作系统支持又面临了新的挑战,公司业务迅猛发展,运营了成百上千个自研业务,并且有第三方业务接入,服务器数量也随之增加。快速发展导致业务场景更加复杂,对操作系统平台的稳定性、性能、底层特性支持方面又有了更高的需求,这与商业操作系统逐渐产生了一些矛盾,这些矛盾和挑战主要体现在以下几个方面:

 

第一个是运营需求,我们知道生产环境下的故障解决是否及时,直接关系到业务的竞争力、业务的收入,但是我们与厂家沟通成本很高,无法做到及时有效。OS 平台厂商,更多考虑的是通用客户的需求,无法专门针对公司业务提供稳定高效的底层 OS 平台;

 

第二是特性方面的支持,有时候业务需要去深入定制 Linux 内核,但是商业 Linux 发行版不允许我们去改内核代码;

 

第三是运营成本的考虑,商业 Linux 操作系统一般按照每年每服务器的标准收费,但是随着服务器数量的迅猛增长,操作系统的使用成本就越来越高;

 

最后是运营风险的考虑,如果说一个公司的所有操作系统都依赖某个厂商,操作系统运营是存在潜在风险的。

自主运营时代



业务对底层操作系统的支持需求也不断提升,自研操作系统显得非常必要。因此 2009 年,公司就组建了操作系统团队,专门负责公司服务器操作系统的研发和底层的运营支持,自研操作系统并不是所有的一切都从头开始,把所有的商业操作系统开源操作系统都撇开从头去造,这样投入会非常大。俗话说的好,站在巨人的肩膀上飞得更高,我们没必要重复发明轮子,所以从最开始我们使用的发行版还是 SUSE,只是在上面做了我们内核的定制,取名为 Tlinux 内核。我们结合公司业务的需求和使用场景进行了一些定制,比如:

 

  • 精简内核

  • 新硬件支持

  • 新技术引进

  • 业务开发需要

  • 稳定性提升

  • 性能改进


随着业务需求的进一步增长,仅仅定制化内核已经不能满足很多业务,我们就开始研发 Tlinux 发行版。同很多其他的这些大型互联网公司一样,我们也是基于开源的 TencentOS 系统做了定制、升级、裁减、调整、添加,形成了我们自己的 Tlinux 发行版,内核使用的还是 Tlinux。这几年,随着 TencentOS 的版本变更,Tlinux 也不断进行演进,相继发布了 Tlinux1 版本、Tlinux2 版本,还有 TencentOS Server3 版本,内核方面迭代得更快,相继发布了四个大版本,依次为 TK1-2.6.32、TK2-3.10、TK3-4.14、TK4-5.4。

 


我们也开发了很多运营系统来管理维护服务器 OS,比如我们研发了宕机自动分析系统。我们的系统可用率可能是非常高的,比如系统可利用率能够达到 4 个 9、甚至 5 个 9 以上,但是因为基数太大,服务器有几百万台,每周还是有上百台的机器宕机,如果一台一台去分析宕机原因,非常耗时耗力。因此,我们研发了宕机自动化分析系统,机器因系统问题导致宕机时,会自动进入第二内核,第二内核会启动 kdump 服务去生成 vmcore,然后自动重启,系统重新开机时会去把 Agent 拉起,Agent 会自动查找有没有生成 vmcore 并进行分析处理,然后对比一些引擎和库,最终给出诊断结果,发给所有 OS 开发人员、机器负责人,告知宕机时间、原因以及修复建议。如果是未知问题,自动分析系统无法分析宕机原因,OS 开发人员就要去介入,手动分析宕机原因,给出修复补丁,一方面制作热补丁去修复,另一方面合入新内核,升级操作系统去解决。

 

仅仅宕机分析系统还不够,我们还研发了 TManager 运营管理系统。在这个系统中,我们实现了很多功能,比如镜像自定义功能,母盘、ISO、单核镜像或者子集镜像都可以通过我们的平台进行自定义制作;还实现了软件的监控告警,比如有些软件版本比较低、有什么 Bug、有什么安全漏洞,会给出提示和告警;还提供了一些主机运维的能力,比如可以自动批量下发任务、脚本、热补丁。另外还实现了漏洞管理的功能。通过这样一套管理系统,OS 开发和业务都能够很好察看自己 OS 的状态,对一些问题能够及时处理,以此来保证操作系统安全稳定的运行。

创新研发时代



十年操作系统自主运营经验,让我们对 OS 产品研发有了更深厚的底气,有了更扎实的技术基础,这十年我把它叫做自主运营时代。2019 年,我们对外开源了我们的操作系统产品。2021 年,我们角色进行了一个大的转变,之前是发行版定制,现在变成了发行版自主研发。发行版自主研发肯定是 OS 研发人员一直以来的梦想,我们不再基于开源的 Linux 发行版,而是基于 Upstream 开源社区,或者我们自研从头开始构建操作系统发行版TencentOS Server Stream,基于这个版本再去研发商业版本 TencentOS Server,研发社区版本 OpenCloudOS,OpenCloudOS 社区是我们发起的一个开放中立的 Linux 开源社区,我们希望通过建立这样一个开放平台,能够联合公司内外的开发者,最终把我们这个操作系统共同打造成一个绿色节能的操作系统,能够充当云原生的底座、基石,共建全场景、多元应用生态。



互联网的下半场是属于产业互联网,也就是说要实现人和设备、设备和设备、设备和服务之间的连接,作为整个公司业务的基石和服务器的灵魂,我们的操作系统也完成了新一轮的变革,从单一的服务器操作系统,拓展到覆盖云数据中心、边缘、物联网终端,提供基于业务场景化的全栈 OS 布局。TencentOS Server 是服务器操作系统,面向云数据中心,主要特点是高性能、安全可靠;TencentOS Edge 是边缘计算操作系统,能够将云上的计算能力边缘化;TencentOS Tiny 是物联网终端操作系统,它的特点是小而精,比如低功耗、低资源占用、模块化。我们通过这样一套操作系统布局,希望能够打造我 2B 端的生态链全栈 OS,能够全面覆盖云数据中心、边缘物联网终端,实现产业互联网的操作系统布局。

 

首先我们基于开源上游社区开发社区上游的 LE 版本,再通过社区力量共同开发社区稳定版,研发完成后会用于生产环境,通过海量业务这部署验证,再次提升这个社区版本的稳定性,并且我们也支持 OS 厂商依据这个社区版本去构建稳定的商业版本,或者衍生版本。


OpencloudOS社区去年发布了一个百川计划,目的是向生态伙伴发出邀约,通过培训任务体系,吸引行业的优秀人才或者优秀项目加入进来,去适配 OpenCloudOS 社区版本。在商业应用方面,我们希望借助社区成员和伙伴的各自渠道赋予激励政策,推动不同软件厂商主动适配,不断丰富生态覆盖度。

 

在开源软件方面,OpenCloudOS 社区通过自动化 CI 系统,持续保障通用开源软件的兼容性。商业中间件方面,社区会成立专门的生态拓展组织,搭建相应的基础设施,推进自动化的流程,持续进行兼容性的验证工作。对硬件厂商来说,OpenCloudOS 会通过社区特色技术和项目将商业合作与社区建设相结合,吸引 OSV 厂商积极贡献,并衍生应用商业版本,同时会推动硬件厂商积极参与贡献回馈社区,保障硬件的一个兼容性。



在技术创新方面,我们也做了很多。这张图是整个操作系统的框架图。内核一方面是要去适配更多的硬件,比如 CPU、GPU、NPU、DPU,另外我们也做了很多方面的优化,比如 CPU 调度优化、内存管理优化、网络优化、I/O 优化,还有云原生优化。我们还开发了宕机自动分析、热补丁功能、虚拟化。在虚拟化容器方面,我们做了很多原创的云原生特性和优化,在运行时和编译器方向,我们有 Kona  JDK、Tencent Compiler 加速库。在应用中间件方面,腾讯有非常多的应用,比如 TDSQL、TBDS、CKafka、TKE。

 

我们的技术创新可以概括成这四个方面:对于企业应用来说,我们可以提升云场景的资源利用率,降低数据中心的一个能耗;对于管理员来讲,我们希望能够达到高效的智能运维、无损升级,支持快速部署和迁移;对于开发者来讲,我们支持 IDE 的高效开发,并且能够支持典型应用的高效部署;对于 OS 开发人员来说,我们在虚拟化、编译器、调度相关贡献了很多代码,云原生相关也有贡献代码,是我们努力的一个方向。

 


接下来给大家介绍一下 TencentOS Server 在助力碳中和方面取得的一些结果。早在 2021 年 1 月,腾讯宣布启动碳中和规划,成为国内首批启动碳中和规划的互联网企业之一。

 

TencentOS Server 在节能降耗领域取得突破,推出如意大规模全场景混部技术。随着语音的快速发展,IDC 的规模不断扩大,投入越来越大。有研究显示,服务器成本占比高达 69%,每年各大互联网厂商服务器支出投入非常大,与此形成鲜明对比的是服务器的平均利用率却很低,通常业界的 CPU 利用率只有 15%左右。这就是我们研发如意这款大规模容器集群混部技术的初衷。如意包括 CPU、网络、IU、内存四大模块,针对四种服务器资源将用户的离线和在线任务部署到同一台服务器上,既能保证在线业务的服务质量,又能有效提升资源的利用率。我们做了一些统计,比如按混部三万台机器进行测算,CPU 利用率可以从 15%提高到 45%,大概每年可以节省两亿度电,减少碳排放达到八万吨的级别。

 


为了进一步降低数据中心的能耗,我们还开发了悟能系统。悟能系统是一套集群级能耗优化方案。它能够对集群进行能效评估,动态启停 CPU 的节能模式,还支持动态迁移进程,部分 CPU 开启节能模式。它包括数据模块、弹性 CPU 策略、迁移策略,调度等等,通过能耗优化降低服务器的能耗,为实现碳中和同样做出了很大的贡献。

 

系统级的能耗优化与全场景混部系统让 TencentOS 成为国内最绿色最节能的操作系统,并且我们在 2021 年荣获了中国新能院授予的奥斯卡金锋开源项目及开源社区奖项。

展望未来



最后我们来看一下腾讯操作系统的未来规划。作为一家大型的科技公司,自主创新肯定是我们长期坚持的道路,一方面我们要做自主可控的操作系统,保证 OS 供应链的安全性,另一方面我们也需要持续不断地创新,让操作系统这棵老树能够不断绽放出新的花朵。其次为了助力国家的碳中和战略,我们会持续优化操作的资源利用率,将 TencentOS 努力打造成绿色经济的 OS。最后作为操作系统的开发者,力争上游或者上游优先是我们的使命,我们会同全球的 OS 开发者一起不断贡献自己的力量,加大开源社区的贡献。

演讲嘉宾:

陶松桥,腾讯操作系统研发高级工程师。负责腾讯操作系统的研发工作,主导了 TencentOS 和 OpenCloudOS 多个版本产品的研发和运营,在操作系统体系结构,应用开发,系统适配等具有丰富经验。

2022-11-12 10:0018891

评论

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

【1024程序员节专访】聚焦行业前沿,共话IT发展趋势

博睿数据

程序员 可观测性 智能运维 博睿数据 IT行业

深入nodejs的event-loop

coder2028

node.js

Redis 知识点全面击破,多图警告

小小怪下士

Java redis 程序员

0元上新丨PostgreSQL零基础开发指南+223页学习资料

博文视点Broadview

Docker进阶 dockerfile指令构建docker镜像

Python-派大星

10月月更

云小课|MRS基础原理之Oozie任务调度

华为云开发者联盟

大数据 华为云 企业号十月 PK 榜

引擎上新|卡片焕新升级,信息高效呈现

Jianmu

DevOps 持续集成 CI/CD

webpack模块化的原理

Geek_02d948

webpack

SAP | 功能模块

暮春零贰

SAP 功能块 10月月更

5 why 分析法,一种用于归纳抽象出解决方案的好方法

程序员泥瓦匠

文读懂NodeJs知识体系和原理浅析

coder2028

node.js

从 wepy 到 uniapp 变形记

vivo互联网技术

wepy uni-app 前端 编译器

Webpack配置实战

Geek_02d948

webpack

【文本检测与识别白皮书-3.2】第二节:场景文本识别方法

合合技术团队

人工智能 深度学习 文字识别 OCR 文本识别

长安链源码分析同步服务器1

一文读透react精髓

xiaofeng

React

京东云开发者|ElasticSearch降本增效常见的方法

京东科技开发者

elasticsearch ES 降本增效 数据压缩 存储计算分离

线上数据问题排查案例分享-因为 HMS 和底层 orc 文件中某字段的数据精度不一致造成的数据丢失问题

明哥的IT随笔

hadoop hive DataX

SAP | 子例程

暮春零贰

SAP 10月月更 子例程

Vue虚拟dom是如何被创建的

yyds2026

Vue

漏洞评分高达9.8分!Text4Shell 会是下一个 Log4Shell吗?

SEAL安全

安全 log4j 漏洞分析 Log4j2 漏洞 软件供应链安全

彻底搞懂nodejs事件循环

coder2028

node.js

Vue模板是怎样编译的

yyds2026

Vue

redux原理是什么

xiaofeng

React

小样本学习在文心ERNIE3.0多分类任务应用--提示学习

汀丶人工智能

nlp 文本分类

Java:既然有了synchronized,为什么还要提供Lock

华为云开发者联盟

Java 开发 华为云 企业号十月 PK 榜

Vue组件是怎样挂载的

yyds2026

Vue

webpack实战,手写loader和plugin

Geek_02d948

webpack

Workflow,要不要了解一下

华为云开发者联盟

人工智能 华为云 企业号十月 PK 榜

云安全系列2:访问安全和身份管理

HummerCloud

云计算 云安全 iam 身份和访问管理 10月月更

原生拖拽太拉跨了,纯JS自己手写一个拖拽效果,纵享丝滑

茶无味的一天

CSS html HTML5, CSS3 拖拉拽 原生js

腾讯操作系统的创新之路_架构_陶松桥_InfoQ精选文章