Alibaba Cloud Linux 解锁云算力-软硬协同构建云上最佳操作系统体验

简介: 为什么需要做软硬件协同?在后摩尔时代,整个算力的提升逐渐放缓,那怎么提升计算机性能?

为什么需要做软硬件协同?在后摩尔时代,整个算力的提升逐渐放缓,那怎么提升计算机性能?龙蜥社区 Java 语言和虚拟机 SIG 成员、阿里云智能程序语言与编译器技术总监李三红2023 龙蜥操作系统大会上分享了如何通过 Alibaba Cloud Linux 做南向和北向的协同,基于阿里云自研芯片倚天做全栈协同设计和优化,解锁阿里云的底层算力。最后,他也做了 C/C++ 编译器套件 Alibaba Cloud Compiler(ACC)以及 Alibaba Dragonwell 解读。以下为本次分享全文:

(图/龙蜥社区 Java 语言和虚拟机 SIG 成员、阿里云智能程序语言与编译器技术总监李三红)

在这个分享里,我们具体讲讲怎么样通过 Alibaba Cloud Linux 做南向和北向的协同,解锁阿里云的底层算力。开始之前,介绍一下 Alibaba Cloud Linux 和龙蜥社区的关系。

整体上看,龙蜥社区分三层:最上层更多的是龙蜥社区和国际开源社区的合作,包括 Linux Foundation,这是整个龙蜥社区的基础,因为龙蜥本身就是操作系统。除了 Linux Foundation 外,也投入与云原生 CNCF 基金会的合作,以及和 Java 领域的两大顶级基金会 Eclipse 和 Apache 的合作。中游是原生发行版社区,通过产业协同去促进整个产品演进迭代。当我们有了非常好的开源社区,如何支撑下游可持续的商业模式?龙蜥社区根据场景的不同,提供了三个版本类别:第一个是 Anolis OS 商业版,比如统信、麒麟商业版。第二个是企业定制版,而  Alibaba Cloud Linux 就是龙蜥社区定制版。最后一个就是开源社区的免费版本,如 Anolis OS 23Anolis OS 8 等等。

介绍软硬件协同之前,我先分享下我们的思考,就是为什么需要做软硬件协同?我们看下整个产业的计算机算力的大趋势,上图参考自两位图灵奖的获得者 David A. Patterson 和 John L. Hennessy 在 2019 年 ACM 的通信杂志上发表的论文《A New Golden Age for Computer Architecture》。论文回溯了整个计算机体系结构的发展周期,基本上是三个阶段:

  • 第一个阶段是在 1985 年前的 CISC 指令集,每年性能提升大概 22%。
  • 第二个阶段是从 1985 年到 2005 年以前,是计算算力高速发展的阶段,大概每年 52% 性能提升。
  • 第三个阶段,2005 年是一个分水岭。基本上整个计算机的算力进入平缓的增长区域,转向了多核,大概每年 23% 的性能提升。

整个算力的提升逐渐放缓,这就是我们说的后摩尔时代,这里有两个观点分享给大家,第一个是关于硬件和软件的接口抽象。提升硬件和软件的抽象层次,可能带来更大的创新机会。举个例子,很早以前程序员写汇编,后面写 C/C++,再到后面写 Java,编程语言抽象级别的提高带来了很大的创新机会。现代化的 Java 高级语言的出现更好地匹配了 2000 年后整个互联网蓬勃发展的速度。第二个是在后摩尔时代怎么提升计算机性能?这也是论文提的一个非常重要的观点,垂直整合,一定要做 Vertical Integration。如果没有垂直整合只能任由算力,或者计算机摩尔定律逐渐失效,这也是我们今天探讨的主题。

接下来,我们再介绍两个大的挑战。第一个挑战是 Power 和 ILP Wall 制约的算力增长。2005 年,C++ 的著名专家 Herb Sutter 在 Dr. Dobb's Journal(DDJ)发表了著名的文章《The Free Lunch Is Over:A Fundamental Turn Toward Concurrency in Software》。相信大家都应该知道这件事,上图也是从这篇文章参考来的,第一个事情,大家看绿线下面的第二条线,时间周期从 1970 年到 2005 年的前后,处理器的时钟速率停止增长。大家都知道 Dennard Scaling 缩放定理,随着晶体管密度的增加,每个晶体管的功耗会下降,因此每平方毫米硅的功耗几乎是恒定的。但是 Dennard Scaling 缩放定律 2007 年的时候开始显著失效,到 2012 年基本没什么作用了。Dennard Scaling 效应的终结,意味着我们无法再按比例降低晶体管的功耗,这导致了“Power Wall”。2006 年到现在,看到的数据中心的处理器频率基本限制在 4GHz 左右, 几乎很难看到通过更高处理器频率来提升性能。第二个事情是关于指令级并行(ILP),最早从 1986 年到 2002 年前后,指令级并行是计算体系结构非常重要提升性能的技术。现代处理器的多并发、多发射、更深的流水线导致更高级的 ILP 非常复杂。为了充满 pipeline,需要预测分支,并“投机性”地将代码放入 pipeline 中以便执行。然而,“投机性”的使用既是 ILP 性能的根源,也是其效率低下的根源。随着现实世界越来越复杂的 Workload 的行为,让这种投机预测变得越来越难(ILP Wall)。这张图的最后这条线,2005 年左右,ILP 不再获得更好的收益,这就是 2005 年的时候为什么要转向多核。从下面的芯片、硬件转向对软件系统并发性能诉求,这其实是一种责任转移,计算机软件将不得不或者说被迫处理好基于多核处理器的大规模并发程序的效率问题,这对软件的并发性能提出了极致的要求。Go 语言在 2009 年诞生, 将并发(Concurrency)作为 Go 语言的一等公民,通过轻量级的“Goroutines”为并发执行提供支持。最近 Java 21 的发布,把 Virtual Thread 用户态线程纳入到 Java 语言体系中推进。

第二个挑战关于内存墙(Memory Wall)。1994 年,弗吉尼亚大学的教授 William Wulf 和他的研究生 Sally McKee 提出:Memory Wall 将成为未来几十年计算机科学领域非常确定性的挑战。Memory Wall 提出的处理器与内存性能的这种差距,在过去几十年中稳步增长。计算机程序有两个部分组成,数据和指令。内存延迟和内存带宽的限制无法很好的让程序的指令和数据更好地接近 CPU,让 CPU 忙起来(CPU 永远在等内存取数据)。这是内存墙带来的挑战。上面这张图是从《Computer Architecture: A Quantitative Approach》第 5 版中借鉴过来的。时间轴从1980 年到 2010 年,下面是内存,上面是 CPU 的性能。Memory Latency, 以 1980 年 64 KB DRAM 为 Baseline,每年大约 7% 的性能提升。而 Processor 性能在1980-1985,每年大约 22% 的性能提升,1985 年-2000 年,每年大约 52% 性能提升。2000 年-2005 年,每年大约 20% 性能提升。2005 年以后到 2010 年,尽管 per-core basis 的性能并无多大变化,但就像我们前面所述,2005 年后开始转向多核,多核让共享的内存资源的争抢更加加剧。怎么样在软件层面解决内存墙的问题也是非常关键的。

我们怎么看待和解决以上挑战?上图中绿色线是传统的计算机体系结构的定义。为了解决上面的挑战,我们应该从更加的扩展视角看待整个计算机体系结构(红色框表示),包含了从芯片到整个系统软件、编程语言、应用层的扩展视角看整个体系结构。

前面介绍了很多挑战,包括算力放缓、Power Wall、ILP Wall、以及 Memory Wall,那么怎么解决以上问题?

第一是需要更好地跨层级协同设计。从芯片到 OS、编译器、应用,这也是我们阿里云持续在做的。

第二是尽可能面向场景的定制优化。不同的应用场景比如大数据的场景和数据库的场景,Workload 的特点不一样,根据不同场景特点做垂直定制优化。当然,这里有个前提是要确保服务用户的界面保持不变。比如各位在运行 MySQL、Spark 的业务,不会因为是运行阿里云上会有什么不同,换句话说我们会确保 MySQL、Spark 的兼容性,与跑在别的环境并不会有什么不同。这是需要遵循的原则,保证用户界面不会被改变。在这种前提下,尽可能面向场景定制化。

具体怎么做的?基本解法就是以 Alibaba Cloud Linux 为纽带的南北向软硬件全栈协同。上图中从下往上看,下面是各种芯片架构,包括 Intel、AMD、Arm(倚天),往上面是阿里云的 ECS 实例,ECS 实例上运行的是 Alibaba Cloud Linux,再上面是编译器与运行时,再到不同业务负载。对阿里云用户来说,MySQL、Spark、Flink 都不变,是很正常的开源的 Workload 或者是标准的 Workload。在此基础上, 我们引入了优化领域一个通用的假设 - Close World Assumption( CWA)。这些负载都是跑在阿里云的基础设施之上 ,在此情况下,它其实是个封闭世界的假设。在这个假设下,我们可以把一些限制去掉,做全系统,全栈的优化。上图的右边列举了各个层级优化。比如我们内核会对各种加速器进行支持,PGO内核本质上是针对应用特点的反馈优化,在大数据或者数据库场景有更好的性能表现。64K 可以更好地提升面向内存密集型的负载性能,这是从整个系统看,怎么更好地解决 Memory Wall 带来的性能问题。最上面我们在 Base OS 有全方位的系统配置和服务优化。接下来我们再展开介绍自研的 JDK(Alibaba Dragonwell),自研的 C 和 C++ 编译器(ACC) 。

面向 C、C++ 场景有我们有一套自研的编译器套件 Alibaba  loud Compiler,简称ACC。ACC 是基于 LLVM 自主研发。我们从两个维度对 ACC 总结。第一个维度,ACC 面向整个阿里云产品,服务云上的客户,一套编译器可以支撑 Intel X64 和 Arm 两种架构。ACC 编译构建速度和传统的 GCC 比大概有 15% 到 40% 的提速。性能优化方面,相比 GCC 大概有 5-15% 的性能提速。第二个维度是面向倚天710的芯片优化,基于倚天平台上独特的 CoreSight 能力,我们构建了 CoreBolt 技术。CoreBolt 可以追踪应用的指令跳转,通过跳转跟踪信息做后期的代码的 layout 优化。CoreBolt 技术在数据库场景已经有大规模应用,大概有 10%~40% 的性能提升。另外一个是面向倚天的 SVE 指令的支持,C++ 很古老,但现在发展也非常快。C++ 20 有非常好的特性,像 Coroutine、Modules,ACC 编译器对这些现代化的 C++ 特性有比较好的支持。

对 C、C++ 的 Workload,Alibaba Could Linux 中通过叠加我们自研的 ACC 编译器,  完成对 C、C++ 全栈的协同优化。很多数据库的 Workload 都是用 C++ 写的。我们再来谈谈 Java。我们通过 Alibaba Could Linux  + Alibaba Dragonwell  来做面向 Java 场景的全栈协同优化。Alibaba Dragonwell 是我们自研的 JDK,帮助优化整个阿里云的Java应用。Alibaba Dragonwell 可以基于 Anolis OS 和Alibaba Could Linux构建和发布。目前发布了 8、11、17 三个 Long Term Support(LTS)版本。Dragonwell 分两个版本,一个是标准版,功能基本上和OpenJDK 一样。另一个版本是扩展版,带来很多面向云场景增强,比如 Wisp(协程),RAS 增强都在扩展版中。上面是不同的平台支持、质量体系、社区维护。我们也在积极参与 Java 领域开源和标准工作,阿里云是 Java 标准委员会 JCP-EC 成员(中国唯一),也是 GraalVM 项目咨询理事会成员(中国唯一)。作为 Eclipse Adoptium 工作组战略基石成员,我们也参与 Eclipse Adoptium 社区治理,讨论和建立 JDK 发行版兼容,稳定性标准,拥有 PMC 席位(中国唯一)。


上图是关于更多 Alibaba Could Linux 的资源链接,如果需要了解更多 Alibaba Could Linux 产品的情况,可以扫码入群或点击链接做更多了解:

Alibaba Cloud Linux 产品文档:

https://help.aliyun.com/product/2632541.html

更多优化特性介绍:

https://help.aliyun.com/zh/ecs/user-guide/kernel-features-and-interfaces


更多视频回放、课件获取:

2023 龙蜥操作系统大会直播回放及技术 PPT上线啦,欢迎点击下方链接观看~

回放链接:https://openanolis.cn/openanolisconference

技术 PPT :关注龙蜥公众号【OpenAnolis 龙蜥】,回复“龙蜥课件”获取。

相关文章
|
6天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
26 9
|
4天前
|
人工智能 Android开发 数据安全/隐私保护
移动应用与系统:探索开发趋势与操作系统的协同进化####
当今时代,移动应用不再仅仅是简单的软件工具,它们已成为扩展智能手机及平板等设备功能的关键。本文旨在深入分析当前移动应用的开发趋势,探讨移动操作系统的最新进展及其对应用开发的影响,并阐述两者如何相互促进、协同进化,共同推动移动互联网技术向前发展。 ####
|
6天前
|
移动开发 人工智能 Android开发
移动应用与系统:探索移动开发与操作系统的协同进化####
当今数字化时代,移动设备已成为日常生活不可或缺的一部分。本文旨在深入探讨移动应用开发与移动操作系统之间的紧密关系及其相互影响,揭示技术创新如何推动这一领域的发展。通过分析当前主流移动操作系统的特点、移动应用的开发趋势以及两者间的互动机制,本文为开发者和用户提供了一个全面了解该领域的窗口。 ####
|
5天前
|
缓存 运维 网络协议
深入Linux内核架构:操作系统的核心奥秘
深入Linux内核架构:操作系统的核心奥秘
22 2
|
9天前
|
人工智能 物联网 Android开发
移动应用与系统:探索开发趋势与操作系统的协同进化####
本文深入探讨了移动应用开发的当前趋势,以及这些趋势如何与移动操作系统的发展相互影响、协同进化。通过分析最新的技术动态、市场数据及用户行为变化,本文旨在为开发者提供关于未来移动应用开发方向的洞察,并讨论操作系统层面的创新如何促进或制约应用的发展。 ####
|
9天前
|
缓存 网络协议 Linux
Linux操作系统内核
Linux操作系统内核 1、进程管理: 进程调度 进程创建与销毁 进程间通信 2、内存管理: 内存分配与回收 虚拟内存管理 缓存管理 3、驱动管理: 设备驱动程序接口 硬件抽象层 中断处理 4、文件和网络管理: 文件系统管理 网络协议栈 网络安全及防火墙管理
31 4
|
8天前
|
安全 网络协议 Linux
Linux操作系统的内核升级与优化策略####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统内核升级的重要性,并详细阐述了一系列优化策略,旨在帮助系统管理员和高级用户提升系统的稳定性、安全性和性能。通过实际案例分析,我们展示了如何安全有效地进行内核升级,以及如何利用调优技术充分发挥Linux系统的潜力。 ####
28 1
|
10天前
|
安全 Android开发 iOS开发
移动应用与系统:探索移动应用开发与操作系统的协同进化###
【10月更文挑战第29天】 本文深入探讨了移动应用开发与移动操作系统之间的紧密联系与相互促进作用,分析了当前主流移动操作系统(如iOS、Android)的最新特性及其对应用开发的影响,并展望了未来移动应用与系统协同发展的新趋势。通过具体案例分析,揭示了开发者如何利用系统特性优化应用性能,提升用户体验,同时指出了跨平台开发工具的兴起如何进一步模糊了应用与系统间的界限,推动了整个移动互联网生态系统的繁荣发展。 ###
32 2
|
11天前
|
物联网 Linux 云计算
Linux操作系统的演变与未来趋势####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统从诞生至今的发展历程,分析了其在服务器、桌面及嵌入式系统领域的应用现状,并展望了云计算、物联网时代下Linux的未来趋势。通过回顾历史、剖析现状、预测未来,本文旨在为读者提供一个全面而深入的视角,以理解Linux在当今技术生态中的重要地位及其发展潜力。 ####
|
16天前
|
边缘计算 人工智能 运维
Linux操作系统:开源力量的崛起与影响###
一场技术革命的回顾 回溯至1991年,当Linus Torvalds宣布Linux操作系统的诞生时,世界或许并未意识到这一举措将如何深刻地改变技术领域的面貌。本文旨在探讨Linux操作系统的发展历程、核心特性、以及它如何引领了一场开源运动,重塑了软件行业的生态。从最初的个人爱好项目成长为全球最广泛采用的服务器操作系统之一,Linux的故事是技术创新与社区精神共同推动下的辉煌篇章。 ###