白话版《openEuler 21.09 技术白皮书》
我阅读了这份几十页的《openEuler 21.09 技术白皮书》，发现其中有些值得重视的技术变化被掩盖在了枯燥的技术术语之中
openEuler
111.49.72.211
分析得真好
xnlu [Firefox 78.0|Windows 7]
2021-10-09T20:54:48.000
171.223.197.213
与时俱进
来自四川成都的 Chrome 94.0|Windows 10 用户
2021-10-10T10:14:11.000
我阅读了这份几十页的《openEuler 21.09 技术白皮书》，发现其中有些值得重视的技术变化被掩盖在了枯燥的技术术语之中
![](/data/attachment/album/202110/09/163504iri7gw576c7a9vg0.jpg)


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


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


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


### openEuler 发布


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


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


![](/data/attachment/album/202110/09/161926ye5bbzd3005tudcc.jpg)


*openEuler 版本图*


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


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


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


### 白话解析白皮书


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


#### 内核特性


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


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


![](/data/attachment/album/202110/09/162014mjavhqzixvggjgde.jpg)


*内核贡献图*


华为在芯片架构、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 内核为基础的操作系统了，而是基于华为本身在这些领域的内核及应用开发的。可以理解为在一个统一的框架下的不同内核、不同操作系统。


![](/data/attachment/album/202110/09/162152afkaijwf7sapt3ff.jpg)


*欧拉的多场景支持*


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


### 结语


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


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




---


想要进一步了解这份《**openEuler 21.09 技术白皮书**》，可以[点击此处下载](https://www.openeuler.org/whitepaper/openEuler-whitepaper-2109.pdf)。

