2022年11月5日,“倚天开启云原生算力新时代”专场在杭州·云栖大会D馆云栖科创SHOW场举行,阿里云程序语言与编译器技术总监李三红发表了《倚天平台全栈应用性能优化与迁移最佳实践》的主题分享,本篇内容根据该演讲整理而成,主要分为四个部分:
1. 倚天ECS应用生态全景
2. 全栈应用性能优化实践
3. 跨架构迁移
4. 重要发布
图:阿里云程序语言与编译器技术总监 李三红
01 倚天ECS应用生态全景
目前,倚天ECS支持丰富的开源生态。在开发者工具方面,倚天ECS支持GCC、LLVM等编译器,以及Java(OpenJDK、GraalVM)、Python等语言;在OS/基础库方面,倚天ECS支持glibc、dpdk、jemalloc、OpenSSL等基础库、以及ubuntu等OS;在容器/虚拟化方面,支持安全容器、Kubernetes(K8S)、Docker、KVM等等。
如上图所示,从应用生态全景看倚天ECS的支持。在操作系统方面,倚天ECS支持OpenAnolis Anolis OS创新LTS版,以及其定制版Alibaba Cloud Linux;在虚拟化&容器方面,倚天ECS支持Dragonfly Hypervisor、ACK、以及阿里云沙箱容器袋鼠;在工具链和语言方面,倚天ECS支持Alibaba Cloud Compiler(LLVM based)、Alibaba Dragonwell、Noslate Anode、APython;在中间件和工作负载方面,倚天ECS支持MySQL、Flink、TensorFlow、Spark等等。
使用倚天ECS,大家比较关心的问题有两个。第一,应用如何平滑迁移倚天ECS?OS、编译器、基础库,开源组件是否能提供更好的适配?是否有工具支持迁移?迁移之后,是否有优秀的云原生管理软件?多架构的软件版本又如何管理?
第二,倚天ECS上,应用可以获得多大的收益?应用能跑多快?
倚天ECS通过软件栈基础组件优化,二/三方库优化,以及通用负载优化,最终实现全栈性能优化。通过相关工具,以及最佳实践,也支持客户场景应用调优。
02 全栈应用性能优化实践
如上图所示,全栈应用优化主要包括倚天ECS、操作系统、编译器/运行时、以及应用。实现全栈优化方法主要有两种,即Outside in approach和Layered approach。
其中,Outside in approach是阿里云基于真实的Workload建立基线,然后基于基线进行迭代优化。
在分层优化方面,阿里云的操作系统团队、编译器团队、中间件团队,以及PaaS团队等,围绕倚天710芯片进行各自的分层优化。举个例子: 我们结合倚天架构的特点,对特定的操作系统和编译器版本进行的协同优化。
目前,阿里云推荐的基础软件版本有Alibaba Cloud Linux(3)、Alibaba Cloud Compiler(13)、Alibaba Dragonwell(11)。应用工具支持包括KeenTune、EMT4J、Jifa、Perf(x)。
围绕倚天ECS,Alibaba Cloud Linux有四个特点。
第一,Alibaba Cloud Linux首次完成全面支持倚天710,实现开箱即用、工单支持、十年维护。
第二,Alibaba Cloud Linux历经阿里双11场景历练,有效支撑阿里云数据库,容器服务等云产品。
第三,Alibaba Cloud Linux作为基座,我们从硬件,内核,编译器,运行时,做了全栈应用优化,大幅提升性能。
第四,Alibaba Cloud Linux逐步向龙蜥社区,以及上游社区开源。
接下来,讲一讲C/C++编译器套件Alibaba Cloud Compiler。Alibaba Cloud Compiler面向倚天710芯片,进行了全面优化。能够更好地支持SVE指令;团队基于倚天710芯片进行微架构调优;倚天710芯片上最新C++20特性支持:Coroutine,Modules等等。
除此之外,Alibaba Cloud Compiler面向阿里云产品,服务云上客户。一套编译器,同时支持X64,AArch64两种架构;支持更快的构建、编译速度,相比GCC 提升15%至40%构建加速;更多易用的编译优化,相比GCC取得5%至15%的性能提升。
Alibaba Dragonwell的中文名是“龙井”,于2019年开源。如上图所示,在倚天芯片上, Alibaba Dragonwell在不同版本间进行迭代优化,11.0.11.6相比11.0.8.3SEPCjbb2015吞吐量提升了58%。在多核情况下的性能,更好地保证扩展性。
接下来,讲一讲一键式调优工具KeenTune。KeenTune可以将云上不同的业务场景和VM规格,进行更好的组合,形成最佳的性能调优;profilesKeenTune可以一键式全栈调优内核参数、应用配置等。
如上图所示,倚天ECS基础软件进行了大量优化,主要有四个方向,即Workload Profiling Driven优化、架构差异优化、编译优化、以及并发优化。
◾ Workload Profiling Driven方面,我们根据负载特点,针对性地使用代码大页、XPS、内核调度、ext4 fast commit等技术进行优化。
◾ 架构差异方面,主要有TLBi、新指令集、Code Cache、寄存器等方面的优化。其中,在新指令集方面,并发多线程是现代化通用负载的典型特征。LSE指令在多核情况下,能够有效提升通用负载的性能。
◾ 编译优化方面,使用了FDO/PGO、LTO等这些传统的编译器优化技术。
◾ 并发优化方面,阿里云在JAVA虚拟机领域,做了大量的Weak Memory优化,也做了CAS、Lock等多线程优化。
如上图所示,倚天ECS在数据库,Big Data,Web多项场景达到了20%以上的性能提升。在C++的RDS-MySQL场景,性能提升了33%;在Java的Fink场景,性能提升了30%;在Web-tooling/Node.js场景,性能提升了43%;在PHP的WordPress场景,性能提升了20%。
03 跨架构迁移
接下来,讲一讲跨架构迁移方案的全软件生命周期支持。目前,阿里云跨架构迁移方案覆盖了源码、构建、测试、生产上线的全流程的跨架构支持。
用户在source code阶段,可以用工具去检查架构上的兼容性、健康性问题。在构建阶段,我们可以帮助用户跨架构编译,支持优化的基础库、开源库、框架的集成。在测试阶段,阿里云沉淀了大量的实践案例,可以帮助用户进行Build Sanity检查,以及软件版本依赖检查。在生产阶段,支持用户进行生产参数检查、软件版本检查,以及线上问题排查的工具支持。
上图是ACK面向多CPU架构的管理图。一个ACK集群同时管理x86节点池和Arm节点池。阿里云镜像仓库ACR全面支持多架构镜像。
在ACK云原生环境里,它会根据CPU架构的不同,自动管理和拉取匹配当前CPU架构的镜像。除此之外,用户业务可以在x86和Arm架构间平滑迁移和配置流量。
我们总结一下:倚天ECS支持丰富的软件、工具,并提供了丰富的文档。用户可以根据自己的需求选择不同的ECS实例,OS实例、工具链、容器。我们通过工具/解决方案支持应用迁移、以及问题排查等方案。
目前,第八代ECS云服务器ARM实例g8y开放邀测。相关网址如下:
https://www.aliyun.com/daily-act/ecs/ecs_yitian
04 重要发布
接下来,介绍全新的源代码扫描工具Cross Platform Migration Scanner;开箱即用的倚天ECS智能优化方案;以及面向开发者社区的倚天ECS开发指南。
Cross Platform Migration Scanner支持多语言,以及跨架构兼容性检查。它可以在源代码阶段,扫描代码,发现兼容性问题。
上图展示了ECS Booster倚天智能优化方案架构,ECS倚天根据不同场景,Web,数据库,缓存,视频,AI等不同场景,自动调配优化参数,支持开箱即用。
11月15号倚天ECS商业版即将正式上线,倚天ECS开发者指南也会在Github开源发布(开源地址:https://github.com/aliyun/yitian-ecs-getting-started)。
在新手指南上,会通过镜像的方式发布容器化的优化结果。通过文档的方式帮助大家完成不同架构的迁移。除此之外,倚天ECS开发者指南提供了丰富的分析工具,帮助用户解决不同的性能问题。以上就是我今天分享的全部内容,谢谢大家。
点击这里,查看嘉宾的精彩演讲视频。