从龙蜥看国产操作系统的生态和机会

这几年,随着“人手N个”手机,平板,手环,手表等终端设备;云计算技术的广泛应用;车联网,工业自动化等边缘侧场景的发展,这些技术背后的底层技术越来越受到大家的重视,不管是芯片还是操作系统,更多的出现在公众媒体上。作为操作系统从业者,很开心看到国内在基础技术上越来越重视。

2020年12月8日,CentOS社区宣布原有的CentOS8将于2021年年底停止维护,国内之前使用CentOS生态的厂家何去何从变成了一个非常现实和急迫的问题。正好这个时候,阿里、统信、英特尔、红旗、龙芯、飞腾等多家公司发起了龙蜥社区。我有点好奇,看一看龙蜥在做什么事情,能不能帮助这些原有依赖CentOS生态的公司?

什么是Linux发行版?

CentOS是一个Linux发行版(Linux distribution),通俗的说,Linux发行版是基于Linux内核,GNU工具,一系列软件以及软件包管理器组成的操作系统。

常见的发行版如下图,大致可以分为社区和商业版本。

不同的发行版适配的软件和硬件不尽相同。更换一个发行版意味着原有的业务软件和硬件可能需要重新适配,测试。RHEL支持周期可以达十二年(参见下图),意味着一次大版本适配可以管十年以上,频繁更换发行版,会极大增加企业的成本。

图片来源:https://access.redhat.com/support/policy/updates/errata

为什么“CentOS8没了”影响这么大?

CentOS和Redhat的企业级Linux发行版RHEL完全一样,不光特性一样,bug都一样,只是更新稍稍慢一点,使用CentOS意味着免费使用Redhat企业级Linux维护能力。CentOS8在2019年release之后,在2020年宣布停止维护,相当于刚刚情定十二年,第二年对方说要分手。。。

替换CentOS是否可能?

前面提到,CentOS8没有了,是更换么?换,意味着之前的部分研发投入打了水漂。不换,意味着自己要把整个发行版维护起来,相当于原本只是自己家的装修和维护,变成了要自己维护整栋楼。工作量大了不是一点点。不换,又希望有人维护,是否可能?国际上有Rocky Linux和AlmaLinux两个新项目继续CentOS8的维护,还有之前一直做RHEL兼容的Oracle Linux。国内则有龙蜥社区。

Rocky Linux和AlmaLinux二者的背后既有AWS、Google Cloud、微软Azure这样顶级云厂商,也有方案提供商。而Oracle Linux,除了和RHEL兼容,还有自己的增强。

一个发行版的维护周期长达十几年。选择一个发行版,意味着日后的十几年要和这个发行版高度合作。所以对于一个基于发行版达成自己商业目标的公司来说。这个发行版的维护能力,本公司的需要能不能有效地反馈到发行版社区,这两个因素都非常重要。

很显然个人和小团队是做不了这个事情的。上面两家新成立的公司意味着要和这两家公司一起发展。对于国内的公司来说,跨文化和地域的沟通实际上增加了研发成本。同时在一个发达国家主导的发行版(例如Oracle Linux)里面,国内公司能有多少话语权也是一个问号。所以如果能由国内的公司提供兼容于CentOS的方案,并且这个公司有丰富的操作系统维护能力,并且能够开放地接纳不同的需求,无疑是一个很好的选择。

龙蜥行不行?

调查一下龙蜥,我发现这么几点:

  • 龙蜥社区的最高机构是理事会,包括阿里云、英特尔、兆芯、统信软件、中科方德、万里红等14家单位。不仅有阿里巴巴这样的互联网厂商,也有统信这样的长期在国内做操作系统的公司,还有龙芯、兆芯、飞腾这样的芯片原厂。

  • 阿里云有丰富的场景。如果阿里云自身已经有大量使用龙蜥,对外部客户来说,相当于获得了阿里云的高强度海量测试。

  • 龙蜥即可以兼容已有的CentOS8,也可以选择龙蜥自研Linux内核获得更多功能特性。

  • 最后龙蜥还能提供超过十年的技术支持。

嗯,看起来是一个可选项。

但是对于一个工程师背景的我。我对于这个事情处于比较谨慎的态度。不仅仅因为我之前曾经在 SUSE也工作过,对于发行版有比较深的了解。同时也是因为我之前一直在研发一线,更看重代码,文档等具体工作。正如Linus所说,talk is cheap,show me your code。

龙蜥在云场景做的怎么样?

对于云场景来说,最重要的是弹性扩容和资源隔离。我选择了资源隔离,看一看龙蜥在资源隔离上面有哪些东西。一看发现龙蜥在资源隔离上支持的方案非常广,能支持各种各样的场景。

在云场景里面,容器扮演了非常重要的角色。大家都在说的云原生的基础就是容器。容器技术可以分成两个层次。一个是像集装箱一样把应用装到容器里面,以容器镜像的形式发布并运行。另一个是如何管理这些集装箱。在如何管理这一块社区有一个事实标准Kubernetes。而集装箱如何执行,集装箱和集装箱之间有多厚的保护壳?这些属于容器运行时要解决的问题。

传统容器方案的特点是非常轻量级,但是安全性和隔离性不足。而基于虚拟化的方式,虽然提供了非常好的安全性和隔离性,但是没有办法做到像容器那样轻量级和快速启动。

看一个发行版对容器的支持,首先要看对基本的容器和容器的管理是否支持的比较好。这部分龙蜥做的没有问题,而且有阿里自研的Pouch增强,还有基于互联网业务的需要实现的混合部署(把需要高优先级快速响应的业务和低优先级的业务混合部署到一起,业界称为混部)。混部的目的是在效率和成本之间有一个非常好的平衡。在没有混合部署之前,为了保证高优先级业务的运行,同一个机器上容器的部署量有限,这样浪费了一部分硬件资源,也就提高了业务的运行成本。通过混部,既保证了高优先级业务的服务质量,也充分利用了硬件资源:让低优先进业务可以在系统负载充足的情况下适当运行。

除了基本的容器,龙蜥还在安全性和隔离性方面提供了不同的解决方案,以适合不同的业务需要。举个例子,为了同时发挥虚拟机和容器的特点(虚拟机有较好的安全性和隔离性,容器能够快速启动),龙蜥集成了开源社区项目Kata,Kata的由蚂蚁金服,华为和英特尔主导;为了支持机密计算的场景,龙蜥支持了inclavare-containers。后者是一个非常典型协作的产品,包括:

  • Occlum:由蚂蚁安全计算团队自研的实现了内存安全的多进程 library OS(rune 的默认 enclave runtime)

  • Dragonwell:由阿里编译器团队定制的 LTS OpenJDK 发行版本(后续会提供 Golang 的支持)

  • Graphene:基于 IntelSGX(SoftwareGuard Extensions)技术并可以运行未经修改程序的开源 library OS(阿里云安全团队合作贡献 Golang 支持)

  • enclave-device-plugin:由阿里云容器服务团队和蚂蚁金服安全计算团队针对 Enclave 硬件技术联合开发的 Kubernetes Device Plugin

能够看得出来,龙蜥在满足业务需要和统筹集成方面有很多的工作。看到这儿我难免有一个疑问。上面的团队其实都属于大阿里,到底龙蜥是不是一个开放和活跃的社区?看一个社区有两个方面,一个是它有没有向上游贡献自己的工作,一个是有没有其他公司向社区贡献。

龙蜥对社区的贡献

先来看看社区贡献这部分,云场景对操作系统的需要可以分为计算、存储和网络三部分。这里我选择了存储场景,在存储场景,原有libaio方案的性能已经不能满足新型高性能存储的需要,由Facebook发起的io_uring很可能可以解决这一类问题。

龙蜥在这里也有大量的贡献,在最新Linux内核(5.15 rc3)使用版本管理工具查看,linux.alibaba.com的作者在io_uring贡献了74个补丁(参见下图),据说在io_uring社区排名第二。比补丁数量更重要的是补丁的质量,通过查看补丁提交信息,可以看到工作包括对多实例的编程模型的改进、多线程的性能优化和内核其他子系统的协作开发等等。

不仅如此,龙蜥的高性能存储技术SIG还基于这些工作,针对Redis等上层业务需要的组件做适配和优化。“redis 在 event poll 和 iouring 下的 qps 对比,可以看到:  高负载情况下,io_uring相比 event poll,吞吐提升 8%~11%。开启 sqpoll 时,吞吐提升 24%~32%“:

上面的性能优化非常的有价值,可以想象,基于它的业务一定会有更好的性能体现。就像一棵大树,让人看到了枝繁叶茂的树冠。同时,更重要的是这棵大树的树干是否健康,前面在内核社区的社区贡献,就是龙蜥操系统的在高性能存储等场景的树干。

其它厂商的参与

独木不成林,作为一个开放的社区,除了向外的贡献,还需要看社区内部是一家独大还是各家都有贡献。前几天我看到一个新闻,国内少有的有自主指令集的龙芯LoongArch在龙蜥社区的贡献众多,涉及基础平台、OpenStack、Ceph、AI 框架、大数据等内容。此外,我在龙蜥SIG列表还看到深度操作系统著名的DDE桌面SIG。

Anolis,is Not Only Linux System

其实龙蜥还有很多工作没有来得及看。比如完整的国密解诀方案,比如Java在ARM64的优化获得SPECjbb第一的得分,比如龙蜥的可靠性和调测能力。

所谓操作系统,就是对下抽象硬件,对上满足业务需要。从这个角度看,操作系统可做的事情很多。尤其是在当前云计算场景,语言的开发者越来越多地基于语言本身开发,越来越不关注操作系统。这无疑给操作系统的演进和优化提供了更大的空间。

龙蜥提到过端边云的规划,据称会把AliOS Things集成到龙蜥中。相比之下,龙蜥在边缘侧的场景还没有任何消息,期待龙蜥在边缘侧最热门的场景——车联网——会有所动作。目前龙蜥还没有ARM和RISC-V的工作组,如果龙蜥能在这两个架构上有更多发力,端和边缘的可能行感觉会更多,也能更好地支持龙蜥做通用基础设施的目标。

参考链接:

1、CentOS Project shifts focus to CentOS Stream 
https://blog.centos.org/2020/12/future-is-centos-stream/

2、Ten scenarios where edge computing can bring new value 
https://www.zdnet.com/article/10-scenarios-where-edge-computing-can-bring-new-value/

3、Cloud Computing Gets Enhanced by Linux Distributions 
https://www.worldposta.com/en/cloud-computing-enhanced-by-linux-distributions/

4、浅谈机密计算-发表在Inclavare Containers开源之际
https://openanolis.cn/blog/detail/242161389854032808

5、高性能存储技术SIG Redis:
https://openanolis.cn/sig/high-perf-storage/doc/218937424285597744

6、干货满满!龙蜥社区Meetup走进龙芯圆满结束,5大技术分享精彩回顾
https://www.leiphone.com/category/industrycloud/NfD57X8MsBupbc3c.html

作者介绍:

张健,先后在SUSE,华为,区块链创业公司,寒武纪等公司工作,任工程师,架构师,技术合伙人,架构师等角色。

技术方向:Linux内核,Linux发行版,ARM,RISC-V,虚拟化。

目前自由职业:提供计算机软件技术课程,职业规划咨询/教练服务。

(0)

相关推荐