当前位置:黑鲸出海 > 热点资讯 > 干货分享 >  手把手带你体验Amazon Graviton2的高性价比

手把手带你体验Amazon Graviton2的高性价比

发表时间:2021-05-18  来源:亚马逊云科技  作者:亚马逊云科技  浏览:次  
2020年5月11日Amazon Graviton2支持的Amazon EC2 M6g实例正式发布,“g”代表“Amazon Graviton2”。

Amazon Graviton2干货小课堂来啦!

先了解一下Amazon Graviton2

2020年5月11日Amazon Graviton2支持的Amazon EC2 M6g实例正式发布,“g”代表“Amazon Graviton2”,这是亚马逊云科技的第二代基于ARM架构的芯片,由Annapurna Labs(亚马逊子公司)利用64位ARM Neoverse N1微架构设计,根据ARM官网资料可以得知这个ARM第一款数据中心定位的CPU架构。Amazon Graviton2的M6g实例和亚马逊云科技第一代基于ARM Cortex-A72微架构的A1实例相比整数性能最高提升7倍。

640 (2).png

在Amazon EC2 M6g推出后不久M6gd、R6g、R6gd、C6g、C6gd、T4g、C6gn等系列实例连续推出,目前基于Amazon Graviton2的实例已经有69款之多,支持的region数量也在不断扩大。亚马逊云科技诸多托管服务如Amazon RDS,Amazon EMR,Amazon Elasticache,Amazon EKS也陆续GA了基于Amazon Graviton2的实例支持。这些托管服务方便客户直接享受到Amazon Graviton2的高性价比,从正式发布新闻稿可以看到,Apache Spark的EMR运行时与Amazon EC2 M6g实例的组合可将总成本降低多达76%并将性能提高3.6倍。Amazon Graviton2实例最高可以为RDS开源数据库提供35%的性能改进和52%的性价比提高。Amazon Graviton2成为了Amazon ElastiCache默认选项,可实现高达45%的性价比提升。

在Amazon Graviton2官网和公开案例中我们已经可以发现众多行业客户开始采用。在Web应用、游戏、高性能运算、EDA设计、媒体编解码、数据分析、数据库、内存缓存以及微服务等领域,Amazon Graviton2均实现了大幅的性价比提升。

探索Amazon Graviton2

高性价比

让我们简单分析下Amazon Graviton2的性价比优势。

首先从价格角度,以美西oregon区域为例,同样是4vCPU/16GB内存的通用型实例,M5.xlarge(按需价格0.192 USD/小时)M6g.xlarge(按需价格0.154 USD/小时),后者价格便宜约20%。另外Amazon Graviton2同样支持Spot请求、RI预留、Savings Plans等帮助客户降低成本。

640.png

其次技术角度先从vCPU角度来看,M5.xlarge的4vCPU和所有主流公有云一样是4个超线程,虽然M5.xlarge是租户独享2个物理core上的4个超线程,有天然的安全和稳定性优势,但是毕竟超线程共享L2缓存等资源带来的性能提升有限,而Amazon Graviton2不存在x86平台的超线程,每个vCPU都是独立的物理核心,因此均为亚马逊云科技主流产品的4物理核心的M6g.xlarge比2物理核心4超线程的M5.xlarge具备天然的性能优势(4物理核心对2物理核心)。

最后技术角度再简单从Amazon Graviton2以及ARM Neoverse N1设计角度看,Amazon Graviton2基于TSMC(台积电)7nm工艺,单颗CPU包括了64个物理核心(64个vCPU)高于亚马逊云科技5代实例单CPU 24-48物理核心,并且所有核心通过mesh结构互联,而且因为Amazon Graviton2无NUMA设计,每个内核访问其它内核与内存的路径一致,CPU核心访问内存享有一致性延迟,这也就是诸如Redis、mysql、hadoop等应用可以获得令人印象深刻的性能提升的原因之一。

如何开始使用Amazon Graviton2

Amazon Graviton2的使用也很简单,对于托管服务只需在实例选择阶段选择Amazon Graviton2系列实例即可,另外Amazon RDS、Amazon Elasticache等还可以把当前X86实例直接切换为Amazon Graviton2实例。

对于Amazon EC2自建服务,需要在操作系统选择界面时候选择ARM 64位版本即可(这里包括您熟悉的Amazon Linux 2、Redhat、Ubuntu、SUSE Linux、Fedora、FreeBSD、Debian等)。你会发现常用软件包和之前使用的安装方式相同(yum,apt-get,pip,npm…),尽管某些应用程序可能需要重新编译,但是基于解释语言(例如Java,NodeJS,Python,Go)可以未经修改地运行。对于编译型语言,比如C语言、C++语言,或者Python中部分基于C语言开发的工具库等少数情况,您需要重新编译或调试代码,这部分建议参考github上的aws-graviton-getting-started网站。

下面分别以Amazon Linux 2和Ubuntu18.04为例演示Amazon EC2自建系统的主要开发工具和依赖环境的构建过程,考虑大量新版本软件针对ARM做了性能优化,尽量用较高版本如php7.4以上。

第一部分

Amazon Linux 2(由亚马逊云科技提供长期技术支持并免费提供的Linux分支,内核做了深度安全和性能优化,支持免费的内核实时补丁,操作上近似Red Hat 7)参考步骤如下:

$ sudo yum update-y#升级内核和重要补丁

$ sudo reboot#内核更新后需要重启系统

$ uname-r#查看内核版本,当前为4.14.200-155.322.amzn2.aarch64

$ sudo yum groupinstall-y“Development Tools”#安装开发工具包

$ sudo amazon-linux-extras enable golang1.11 corretto8 php7.4 python3.8 ruby2.6#这个会输出amazon-linux-extras命令告诉我们要安装那些软件包(这里采用Extras库,也支持EPEL外部源)

$ yum clean metadata

$ sudo yum install-y golang java-1.8.0-amazon-corretto

php-cli php-pdo php-fpm php-json php-mysqlnd

python38 ruby ruby-irb rubygem-rake rubygem-json rubygems

下面让我们检查一下刚刚安装的工具版本:

$ go version

go version go1.13.15 linux/arm64

$ java-version

openjdk version“1.8.0_272”

OpenJDK Runtime Environment Corretto-8.272.10.3(build 1.8.0_272-b10)

OpenJDK 64-Bit Server VM Corretto-8.272.10.3(build 25.272-b10,mixed mode)

#Amazon Corretto是开源Java开发工具包(OpenJDK),是OpenJDK的可靠版本并通过TCK认证,Corretto包括安全修复和性能增强,垃圾回收调度,防止内存不足的情况,以及改进的监视,报告和线程管理,并提供长期支持,亚马逊在内部以数千种生产服务运行Corretto。

$ php-v

PHP 7.4.11(cli)(built:Oct 21 2020 19:12:31)(NTS)

Copyright(c)The PHP Group

Zend Engine v3.4.0,Copyright(c)Zend Technologies

$ python3.8-V

Python 3.8.5

$ ruby-v

ruby 2.6.6p146(2020-03-31 revision 67876)[aarch64-linux]

第二部分

Ubuntu18.04参考步骤如下

$ sudo apt update#apt和apt-get相同(后面会分别展示)

$ sudo reboot#如果有内核更新,需要重启系统(当前没有)

$ uname-r#查看内核版本,当前为5.4.0-1029-aws,update前后并没有变化

$ sudo apt install-y build-essential#安装开发工具包gcc、make等

方法一 如果基于ppa源请参考下面步骤,以PHP和python为例:

$ sudo apt-y install software-properties-common#用于添加ppa源

$ sudo add-apt-repository ppa:ondrej/php#PPA含PHP7.4

$ sudo apt update

$ sudo apt-y install php7.4

$ php-v

PHP 7.4.12(cli)(built:Oct 31 2020 17:04:09)(NTS)

Copyright(c)The PHP Group

Zend Engine v3.4.0,Copyright(c)Zend Technologies

with Zend OPcache v7.4.12,Copyright(c),by Zend Technologies

$ sudo add-apt-repository ppa:deadsnakes/ppa#PPA含python3.8

$ sudo apt-get update

$ sudo apt-get install python3.8

$ python3.8-V

Python 3.8.6

方法二 如果基于传统方式安装请参考下面步骤,以Corretto为例:

$ curl https://apt.corretto.aws/coretto.key|sudo apt-key add–

sudo add-apt-repository‘deb https://apt.corretto.aws stable main’

首先导入Corretto公有密钥,将存储库添加到系统列表

$ sudo apt update

$ sudo apt install-y java-1.8.0-amazon-corretto-jdk#如果希望基于java8环境

$ java-version

openjdk version“1.8.0_275”

OpenJDK Runtime Environment Corretto-8.275.01.1(build 1.8.0_275-b01)

OpenJDK 64-Bit Server VM Corretto-8.275.01.1(build 25.275-b01,mixed mode)$sudo apt install-y java-11-amazon-corretto-jdk#如果希望基于java11环境

$ $java-version

openjdk version“11.0.9.1”2020-11-04 LTS

OpenJDK Runtime Environment Corretto-11.0.9.12.1(build 11.0.9.1+12-LTS)

OpenJDK 64-Bit Server VM Corretto-11.0.9.12.1(build 11.0.9.1+12-LTS,mixed mode)

第三部分

Amazon Linux 2下Redis的安装基本过程

$ sudo yum install gcc tcl-y#安装gcc编译器和redis test所需tcl组件。

$ wget http://download.redis.io/releases/redis-6.0.9.tar.gz#官网下载所需版本

$ tar xzf redis-6.0.9.tar.gz#解压缩

编译阶段,这里有2个选择,选择(1)使用默认的jemalloc

$ cd redis-6.0.9/deps#进入这个目录

$ make hiredis jemalloc linenoise lua geohash-int

$ cd..#回到redis主目录

$ make

选择(2)使用MALLOC

$ cd redis-6.0.9

$ make MALLOC=libc

安装完毕可以运行下面测试

$ make test#验证redis安装成功,底部可以提到:“o/All tests passed without errors!”

$./src/redis-server&#后台运行redis服务

$./src/redis-cli#运行redis客户端

127.0.0.1:6379>ping#测试redis工作正常

PONG

另外还可以运行redis自带测试工具./src/redis-benchmark进行性能测试

第四部分

Ubuntu18.04下Redis的安装基本过程

$ sudo apt update

$ sudo apt install build-essential tcl-y

$ wget http://download.redis.io/releases/redis-6.0.9.tar.gz

$ tar xzf redis-6.0.9.tar.gz

$ cd redis-6.0.9

$ make

有兴趣的朋友可以对比测试下亚马逊云科技5代实例和Amazon Graviton2系列实例,看看在相同vCPU下,您的应用性能提升是否满意。

注:文章源自于互联网,如有侵权,请联系客服删除。
19951839869
黑鲸出海客服