阿里云李三红:倚天平台全栈应用性能优化与迁移最佳实践

简介: 倚天云服务器已于11月15日正式商业化

2022年11月5日,“倚天开启云原生算力新时代”专场在杭州·云栖大会D馆云栖科创SHOW场举行,阿里云程序语言与编译器技术总监李三红发表了《倚天平台全栈应用性能优化与迁移最佳实践》的主题分享,本篇内容根据该演讲整理而成,主要分为四个部分:

1.   倚天ECS应用生态全景

2.   全栈应用性能优化实践

3.   跨架构迁移

4.   重要发布

1-调整尺寸.jpg

图:阿里云程序语言与编译器技术总监 李三红


01 倚天ECS应用生态全景

2.PNG

目前,倚天ECS支持丰富的开源生态。在开发者工具方面,倚天ECS支持GCC、LLVM等编译器,以及Java(OpenJDK、GraalVM)、Python等语言;在OS/基础库方面,倚天ECS支持glibc、dpdk、jemalloc、OpenSSL等基础库、以及ubuntu等OS;在容器/虚拟化方面,支持安全容器、Kubernetes(K8S)、Docker、KVM等等。

3.PNG


如上图所示,从应用生态全景看倚天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等等。

4.PNG


使用倚天ECS,大家比较关心的问题有两个。第一,应用如何平滑迁移倚天ECS?OS、编译器、基础库,开源组件是否能提供更好的适配?是否有工具支持迁移?迁移之后,是否有优秀的云原生管理软件?多架构的软件版本又如何管理?


第二,倚天ECS上,应用可以获得多大的收益?应用能跑多快?


倚天ECS通过软件栈基础组件优化,二/三方库优化,以及通用负载优化,最终实现全栈性能优化。通过相关工具,以及最佳实践,也支持客户场景应用调优。


02 全栈应用性能优化实践

5.PNG

如上图所示,全栈应用优化主要包括倚天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)。

6.PNG


围绕倚天ECS,Alibaba Cloud Linux有四个特点。

第一,Alibaba Cloud Linux首次完成全面支持倚天710,实现开箱即用、工单支持、十年维护。

第二,Alibaba Cloud Linux历经阿里双11场景历练,有效支撑阿里云数据库,容器服务等云产品。

第三,Alibaba Cloud Linux作为基座,我们从硬件,内核,编译器,运行时,做了全栈应用优化,大幅提升性能。

第四,Alibaba Cloud Linux逐步向龙蜥社区,以及上游社区开源。

7.PNG


接下来,讲一讲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%的性能提升。

8.PNG


Alibaba Dragonwell的中文名是“龙井”,于2019年开源。如上图所示,在倚天芯片上, Alibaba Dragonwell在不同版本间进行迭代优化,11.0.11.6相比11.0.8.3SEPCjbb2015吞吐量提升了58%。在多核情况下的性能,更好地保证扩展性。

9.PNG


接下来,讲一讲一键式调优工具KeenTune。KeenTune可以将云上不同的业务场景和VM规格,进行更好的组合,形成最佳的性能调优;profilesKeenTune可以一键式全栈调优内核参数、应用配置等。

10.PNG


如上图所示,倚天ECS基础软件进行了大量优化,主要有四个方向,即Workload Profiling Driven优化、架构差异优化、编译优化、以及并发优化。

◾ Workload Profiling Driven方面,我们根据负载特点,针对性地使用代码大页、XPS、内核调度、ext4 fast commit等技术进行优化。

◾ 架构差异方面,主要有TLBi、新指令集、Code Cache、寄存器等方面的优化。其中,在新指令集方面,并发多线程是现代化通用负载的典型特征。LSE指令在多核情况下,能够有效提升通用负载的性能。

◾ 编译优化方面,使用了FDO/PGO、LTO等这些传统的编译器优化技术。

◾ 并发优化方面,阿里云在JAVA虚拟机领域,做了大量的Weak Memory优化,也做了CAS、Lock等多线程优化。

11.PNG


如上图所示,倚天ECS在数据库,Big Data,Web多项场景达到了20%以上的性能提升。在C++的RDS-MySQL场景,性能提升了33%;在Java的Fink场景,性能提升了30%;在Web-tooling/Node.js场景,性能提升了43%;在PHP的WordPress场景,性能提升了20%


03 跨架构迁移

12.PNG


接下来,讲一讲跨架构迁移方案的全软件生命周期支持。目前,阿里云跨架构迁移方案覆盖了源码、构建、测试、生产上线的全流程的跨架构支持


用户在source code阶段,可以用工具去检查架构上的兼容性、健康性问题。在构建阶段,我们可以帮助用户跨架构编译,支持优化的基础库、开源库、框架的集成。在测试阶段,阿里云沉淀了大量的实践案例,可以帮助用户进行Build Sanity检查,以及软件版本依赖检查。在生产阶段,支持用户进行生产参数检查、软件版本检查,以及线上问题排查的工具支持。

13.PNG


上图是ACK面向多CPU架构的管理图。一个ACK集群同时管理x86节点池和Arm节点池。阿里云镜像仓库ACR全面支持多架构镜像


在ACK云原生环境里,它会根据CPU架构的不同,自动管理和拉取匹配当前CPU架构的镜像。除此之外,用户业务可以在x86和Arm架构间平滑迁移和配置流量。

14.PNG


我们总结一下:倚天ECS支持丰富的软件、工具,并提供了丰富的文档。用户可以根据自己的需求选择不同的ECS实例,OS实例、工具链、容器。我们通过工具/解决方案支持应用迁移、以及问题排查等方案。


目前,第八代ECS云服务器ARM实例g8y开放邀测。相关网址如下:

https://www.aliyun.com/daily-act/ecs/ecs_yitian


04 重要发布

15.PNG


接下来,介绍全新的源代码扫描工具Cross Platform Migration Scanner;开箱即用的倚天ECS智能优化方案;以及面向开发者社区的倚天ECS开发指南。

16.PNG


Cross Platform Migration Scanner支持多语言,以及跨架构兼容性检查。它可以在源代码阶段,扫描代码,发现兼容性问题。

17.PNG


上图展示了ECS Booster倚天智能优化方案架构,ECS倚天根据不同场景,Web,数据库,缓存,视频,AI等不同场景,自动调配优化参数,支持开箱即用。

18.PNG


11月15号倚天ECS商业版即将正式上线,倚天ECS开发者指南也会在Github开源发布(开源地址:https://github.com/aliyun/yitian-ecs-getting-started)。


在新手指南上,会通过镜像的方式发布容器化的优化结果。通过文档的方式帮助大家完成不同架构的迁移。除此之外,倚天ECS开发者指南提供了丰富的分析工具,帮助用户解决不同的性能问题。以上就是我今天分享的全部内容,谢谢大家。


点击这里,查看嘉宾的精彩演讲视频。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4月前
|
存储 弹性计算 监控
【阿里云云原生专栏】成本优化策略:在阿里云云原生平台上实现资源高效利用
【5月更文挑战第29天】本文探讨了在阿里云云原生平台上实现资源高效利用和成本优化的策略。通过资源监控与评估,利用CloudMonitor和Prometheus等工具分析CPU、内存等使用情况,识别浪费。实施弹性伸缩策略,利用自动伸缩规则根据业务负载动态调整资源。借助容器化管理和Kubernetes编排提高资源利用率,优化存储选择如OSS、NAS,以及网络配置如VPC和CDN。示例展示了如何使用Kubernetes的HorizontalPodAutoscaler进行弹性伸缩,降低成本。
213 4
|
4月前
|
监控 Cloud Native 数据库
【阿里云云原生专栏】性能优化之道:阿里云云原生平台上的监控与调优策略
【5月更文挑战第22天】本文介绍了阿里云云原生平台的监控与调优策略。阿里云提供如CloudMonitor、ARMS和ACK监控等工具,用于基础和应用监控,以及容器监控。调优策略包括资源、代码和架构优化,例如根据监控数据调整资源配置,优化代码性能,和利用微服务、容器化和无服务器化改进架构。示例代码展示了如何进行监控和调优操作,强调实时监控与针对性调优对提升云原生应用性能的重要性。
288 1
|
存储 人工智能 运维
带你读《云原生架构白皮书2022新版》——作业帮原生降本增效实践之路(下)
带你读《云原生架构白皮书2022新版》——作业帮原生降本增效实践之路(下)
132 6
|
弹性计算 Kubernetes Cloud Native
带你读《云原生架构白皮书2022新版》——作业帮原生降本增效实践之路(上)
带你读《云原生架构白皮书2022新版》——作业帮原生降本增效实践之路(上)
108 1
|
弹性计算 Cloud Native Linux
带你读《企业级云原生白皮书项目实战》——3.2.11 伸缩与优化
带你读《企业级云原生白皮书项目实战》——3.2.11 伸缩与优化
|
监控 Cloud Native 大数据
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(7)
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(7)
101 0
|
缓存 监控 Cloud Native
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(2)
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(2)
|
分布式计算 Cloud Native 大数据
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(3)
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(3)
|
消息中间件 监控 Cloud Native
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(4)
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(4)
|
Cloud Native 大数据 流计算
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(6)
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(6)