3

白话版《openEuler 21.09 技术白皮书》 | Linux 中国

 2 years ago
source link: https://zhuanlan.zhihu.com/p/426013898
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

白话版《openEuler 21.09 技术白皮书》 | Linux 中国

我阅读了这份几十页的《openEuler 21.09 技术白皮书》,发现其中有些值得重视的技术变化被掩盖在了枯燥的技术术语之中

  • 作者:硬核老王

(本文字数:3957,阅读时长大约:7 分钟)

2021 国庆前一天,欧拉操作系统按照既定的半年发布一个创新版本的节奏,发布了第三个创新版本 openEuler 21.09。在前不久召开的“华为全连接 2021 大会”上,我听到了欧拉即将进行“全新”发布的消息。作为一名长期观察欧拉发展的业内人士,我对这“全新”的说法是好奇的,这究竟是一种宣传的手法,亦或是真的有了很大不同?

怀着这个疑问,我对在“华为全连接 2021”后几天发布的 openEuler 21.09 是颇为关注的,希望可以第一时间拿到它的白皮书一窥究竟。几天后,欧拉发布了该版本的技术白皮书。我在翻阅后感觉,与其说欧拉是一辆粉饰一新的新车,不如说是它在引擎盖下做了颇多改进。

在这份几十页的《openEuler 21.09 技术白皮书》,颇有一些值得重视的技术变化被掩盖在了枯燥的技术术语之中,因此,本着一飨读者的想法,我对其中值得关注的地方,用更浅显的语言进行了一些解读。

openEuler 发布

首先回顾一下欧拉的基本情况。欧拉最初脱胎于华为内部的 Linux 发行版 EulerOS,后于 2019 年底宣布开源,成为 openEuler。其主要面对的是服务器基础设施领域,并在次年春季发布了第一个 LTS 版本。欧拉的主要技术路线沿袭了红帽系的技术方向,无论是从软件包管理、文件系统布局、操作系统体验方面,都吸收了不少 CentOS/RHEL 惯例。但是,欧拉又不是一个 CentOS 的某个版本的下游分支版本,因为其从内核、特性、技术演进方向,都有自己的独立而确定的发展计划,这一点和 SUSE 公司的 openSUSE/SLES 发行版家族类似。

欧拉采用了定期发布版本的发行计划,每两年发布一个长期支持版本(LTS)。除了作为服务器操作系统所重视的长期支持和特性稳定之外,欧拉也是一个技术孵化器,它每半年发布一次的创新版,集成了社区的最新技术成果,将社区验证成熟的特性逐步回合到发行版中。从 2020 年 3 月发布第一个 LTS 版本之后,它已经发布了三个创新版本,按照计划,下一个 LTS 版本将于 2022 年 3 月到来。

openEuler 版本图

如上所述,这次发布的 21.09 是一个创新版本,主要是迭代演进即将放入到下一个 LTS 版本中的新特性。在这个版本中,重点引入和发展的特性有:

  • 内核的创新:新介质文件系统和内存分级扩展
  • 云原生创新:容器操作系统、安全容器和双平面部署
  • 增强的特性:对语言编译器的支持、对运维的支持
  • 全场景创新:对编译计算、嵌入式场景的支持和集群加速引擎

下面,我们就这些特性展开来了解一下。

白话解析白皮书

如果不是欧拉社区的相关贡献者和长期参与者,你可能会觉得这份技术白皮书有些难读。我也是这样觉得的,不过,进行梳理之后,我把这几十页的内容凝聚成了几个关键字:内核特性、容器技术、架构支持和场景支持

内核特性

Linux 系统给你的感受是什么?可能有很多答案,但是归根到底,这是一幢建立在 Linux 内核基础之上的华厦。内核提供的各种新特性,通过上层的应用最终提供了各种公用。因此,一个 Linux 操作系统的根本就是内核。

说句题外话,国内流行的 CentOS,主要的原因还是大家信任它的内核。这一点,谁做过运维谁知道。而华为作为国内首屈一指的在 Linux 内核方面颇有建树的企业,这些年来,在 Linux 内核方面已经做出了诸多贡献。

内核贡献图

华为在芯片架构、ACPI、内存管理、文件系统、介质、内核文档、内核质量加固及代码重构等方面,十余年来总计向社区贡献 17000+ 个补丁。而在 Linux 内核 5.10 和 5.14 版本中,欧拉内核研发团队代码贡献量排名全球第一。

那么我们来看看具体在这个版本中,欧拉在内核方面做了什么努力。

欧拉 21.09 还是基于 Linux 内核 5.10 构建,但在进程调度、内存管理、网络等方面带来了 12 处创新,这主要有:用来提升性能的进程调度优化、大页内存性能优化、OOM 内存回收优化、XDP 网络性能优化等。

除了这些隐蔽但重要的内核改进之外,如今在运维领域已经大量使用的非易失性内存(NVDIMM)存储介质,在使用传统的 ext4 文件系统时,尚缺乏针对性的优化,因为 Ext4 本身是针对旋转式硬盘设计的文件系统。尤其在元数据管理方面,基于现有日志同步机制,元数据管理开销大,且容易出现写放大问题,NVDIMM 优势无法充分发挥。华为推出的 Eulerfs 创新的元数据软更新技术,减少了元数据同步开销,有效提升文件系统的系统调用性能。在单机应用、云原生分布式应用高性能数据存储场景,可以代替 Ext4、XFS 等文件系统。

容器技术

现在的运维领域,几乎是言必称云原生。一个操作系统的对云原生、虚拟化的支持力度,也成了一种试金石。

欧拉面向云原生业务混合部署场景提出了一种 QAS 算法。它是一种适用于云原生场景,业务混合部署的全新调度算法,可以确保在线任务对 CPU 的快速抢占,确定性的调度运行,同时压制离线任务干扰。此外,在欧拉中还优化了 OOM(内存使用超量)时内存回收调度算法,在发生 OOM 时,优先对低优先级的进程组进行内存回收,保障在线业务的正常运行。这些改进适用于对交互类等时延敏感型业务(比如 MySQL、Redis、Nginx 等)和 CPU 消耗重且时延不敏感的业务(如 AI 离线训练)混合部署,它包括了容器与容器、容器与进程、容器与虚机、虚机与虚机等多种混合部署场景。

Kubernetes 已经成为事实上的云原生软件基础设施底座。业界的主流操作系统厂商都推出了针对云原生场景的操作系统。欧拉自然也不甘人后,推出了容器化操作系统 KubeOS,实现云原生集群操作系统的统一容器化管理。它可以对操作系统容器化管理、对接 Kubernetes、原子化的生命周期管理;它也对操作系统进行了轻量化裁剪,减少不必要的冗余包,可实现系统的快速升级、替换等。

再往底层看,欧拉结合虚拟化运行时 StratoVirt、容器管理引擎 iSulad 构建了安全容器方案,较之传统的 Docker + Qemu 方案,其底噪和启动时间优化高达 40% 以上,为应用提供了一个轻量、安全的执行环境,隔离了容器和宿主机操作系统间、容器间的安全风险。

架构支持

针对不同的硬件架构,欧拉在编程语言和架构方面还做了支持。

欧拉提供的毕昇 JDK 是基于 OpenJDK 开发的增强版本,具备高性能、高可用等优点,可用于生产环境。值得一提的是,它积累了大量使用场景,并针对 ARM 进行了性能优化。毕昇 JDK 支持 OpenJDK 8 和 OpenJDK 11 两个版本。

在欧拉中也有鲲鹏处理器打造的高性能编译器,Kunpeng GCC 编译器是基于 GCC 开发的,可以充分发挥鲲鹏的硬件特性,运行效率更高。

据测试,毕昇 JDK 在 SPECjbb2015 等基准测试中性能优于 OpenJDK。Kunpeng GCC 编译器在 SPEC CPU 2017 等基准测试中性能大幅优于上游社区的 GCC 10.3 版本。欧拉最初就是针对华为鲲鹏硬件架构开发的操作系统,因此,在欧拉中自然提供了针对性的优化,以充分发挥鲲鹏服务器硬件特性,这也算是应有之义。

在这次发布中,华为还重点提及,欧拉最初是作为对鲲鹏硬件的支持出现的,但是现在已经扩展到支持 x86、ARM、RISC-V 等多处理器架构,未来还会扩展 PowerPC、SW64 等更多芯片架构支持。但是从白皮书中,我们尚没有看到对其它处理器架构的特定优化工作和测试数据。

场景支持

从白皮书中我们看到,欧拉现在从对服务器场景的应用,逐步拓展到云计算、边缘计算、嵌入式等更多场景,正成为覆盖全场景的操作系统。

欧拉透露,它将发布面向边缘计算的版本 openEuler 21.09 Edge 和面向嵌入式的版本 openEuler 21.09 Embedded。这两个针对不同场景的版本突破了原有的服务器基础设施领域,但是,从我了解到的情况看,这其实已经不是 Linux 内核为基础的操作系统了,而是基于华为本身在这些领域的内核及应用开发的。可以理解为在一个统一的框架下的不同内核、不同操作系统。

欧拉的多场景支持

当然,除此以外,在这次发布的欧拉 21.09 中,还有很多具体方向的创新和改进,感兴趣的同学可以获取这份技术白皮书以了解究竟。

每半年发布的一个创新版,我认为并不是很适合于需要特性稳定的产品环境部署,但是通过这些创新版本,社区和相关生态的企业可以提前针对新的特性进行开发、测试和优化。而无论是服务器环境,还是嵌入式、边缘技术,都需要一个具备稳定性、高性能、精细调优的操作系统,这就是明年 3 月将发布的下一个 LTS 版本的目标。而且,除了长期支持以外,我们可以期待在创新版中发布的新特性,也会经过打磨后融入到 LTS 版本中。

当然,我认为,LTS 版本并不是一个口号,而是需要真正地提供支持和维护。这是一种并不像发布新版本那么令人激动的工作,但是这种持续的支持,才是一个企业级的操作系统的根本。我们期望看到欧拉能够践行其对技术创新和长期支持的承诺和落实。


想要进一步了解这份《openEuler 21.09 技术白皮书》,点此下载:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK