手把手帶你體驗(yàn)Amazon Graviton2的高性價(jià)比

來源: 亞馬遜云科技
作者:亞馬遜云科技
時(shí)間:2021-05-18
17286
2020年5月11日Amazon Graviton2支持的Amazon EC2 M6g實(shí)例正式發(fā)布,“g”代表“Amazon Graviton2”。

Amazon Graviton2干貨小課堂來啦!

先了解一下Amazon Graviton2

2020年5月11日Amazon Graviton2支持的Amazon EC2 M6g實(shí)例正式發(fā)布,“g”代表“Amazon Graviton2”,這是亞馬遜云科技的第二代基于ARM架構(gòu)的芯片,由Annapurna Labs(亞馬遜子公司)利用64位ARM Neoverse N1微架構(gòu)設(shè)計(jì),根據(jù)ARM官網(wǎng)資料可以得知這個(gè)ARM第一款數(shù)據(jù)中心定位的CPU架構(gòu)。Amazon Graviton2的M6g實(shí)例和亞馬遜云科技第一代基于ARM Cortex-A72微架構(gòu)的A1實(shí)例相比整數(shù)性能最高提升7倍。

640 (2).png

在Amazon EC2 M6g推出后不久M6gd、R6g、R6gd、C6g、C6gd、T4g、C6gn等系列實(shí)例連續(xù)推出,目前基于Amazon Graviton2的實(shí)例已經(jīng)有69款之多,支持的region數(shù)量也在不斷擴(kuò)大。亞馬遜云科技諸多托管服務(wù)如Amazon RDS,Amazon EMR,Amazon Elasticache,Amazon EKS也陸續(xù)GA了基于Amazon Graviton2的實(shí)例支持。這些托管服務(wù)方便客戶直接享受到Amazon Graviton2的高性價(jià)比,從正式發(fā)布新聞稿可以看到,Apache Spark的EMR運(yùn)行時(shí)與Amazon EC2 M6g實(shí)例的組合可將總成本降低多達(dá)76%并將性能提高3.6倍。Amazon Graviton2實(shí)例最高可以為RDS開源數(shù)據(jù)庫提供35%的性能改進(jìn)和52%的性價(jià)比提高。Amazon Graviton2成為了Amazon ElastiCache默認(rèn)選項(xiàng),可實(shí)現(xiàn)高達(dá)45%的性價(jià)比提升。

在Amazon Graviton2官網(wǎng)和公開案例中我們已經(jīng)可以發(fā)現(xiàn)眾多行業(yè)客戶開始采用。在Web應(yīng)用、游戲、高性能運(yùn)算、EDA設(shè)計(jì)、媒體編解碼、數(shù)據(jù)分析、數(shù)據(jù)庫、內(nèi)存緩存以及微服務(wù)等領(lǐng)域,Amazon Graviton2均實(shí)現(xiàn)了大幅的性價(jià)比提升。

探索Amazon Graviton2

高性價(jià)比

讓我們簡單分析下Amazon Graviton2的性價(jià)比優(yōu)勢。

首先從價(jià)格角度,以美西oregon區(qū)域?yàn)槔瑯邮?vCPU/16GB內(nèi)存的通用型實(shí)例,M5.xlarge(按需價(jià)格0.192 USD/小時(shí))M6g.xlarge(按需價(jià)格0.154 USD/小時(shí)),后者價(jià)格便宜約20%。另外Amazon Graviton2同樣支持Spot請求、RI預(yù)留、Savings Plans等幫助客戶降低成本。

640.png

其次技術(shù)角度先從vCPU角度來看,M5.xlarge的4vCPU和所有主流公有云一樣是4個(gè)超線程,雖然M5.xlarge是租戶獨(dú)享2個(gè)物理core上的4個(gè)超線程,有天然的安全和穩(wěn)定性優(yōu)勢,但是畢竟超線程共享L2緩存等資源帶來的性能提升有限,而Amazon Graviton2不存在x86平臺的超線程,每個(gè)vCPU都是獨(dú)立的物理核心,因此均為亞馬遜云科技主流產(chǎn)品的4物理核心的M6g.xlarge比2物理核心4超線程的M5.xlarge具備天然的性能優(yōu)勢(4物理核心對2物理核心)。

最后技術(shù)角度再簡單從Amazon Graviton2以及ARM Neoverse N1設(shè)計(jì)角度看,Amazon Graviton2基于TSMC(臺積電)7nm工藝,單顆CPU包括了64個(gè)物理核心(64個(gè)vCPU)高于亞馬遜云科技5代實(shí)例單CPU 24-48物理核心,并且所有核心通過mesh結(jié)構(gòu)互聯(lián),而且因?yàn)锳mazon Graviton2無NUMA設(shè)計(jì),每個(gè)內(nèi)核訪問其它內(nèi)核與內(nèi)存的路徑一致,CPU核心訪問內(nèi)存享有一致性延遲,這也就是諸如Redis、mysql、hadoop等應(yīng)用可以獲得令人印象深刻的性能提升的原因之一。

如何開始使用Amazon Graviton2

Amazon Graviton2的使用也很簡單,對于托管服務(wù)只需在實(shí)例選擇階段選擇Amazon Graviton2系列實(shí)例即可,另外Amazon RDS、Amazon Elasticache等還可以把當(dāng)前X86實(shí)例直接切換為Amazon Graviton2實(shí)例。

對于Amazon EC2自建服務(wù),需要在操作系統(tǒng)選擇界面時(shí)候選擇ARM 64位版本即可(這里包括您熟悉的Amazon Linux 2、Redhat、Ubuntu、SUSE Linux、Fedora、FreeBSD、Debian等)。你會發(fā)現(xiàn)常用軟件包和之前使用的安裝方式相同(yum,apt-get,pip,npm…),盡管某些應(yīng)用程序可能需要重新編譯,但是基于解釋語言(例如Java,NodeJS,Python,Go)可以未經(jīng)修改地運(yùn)行。對于編譯型語言,比如C語言、C++語言,或者Python中部分基于C語言開發(fā)的工具庫等少數(shù)情況,您需要重新編譯或調(diào)試代碼,這部分建議參考github上的aws-graviton-getting-started網(wǎng)站。

下面分別以Amazon Linux 2和Ubuntu18.04為例演示Amazon EC2自建系統(tǒng)的主要開發(fā)工具和依賴環(huán)境的構(gòu)建過程,考慮大量新版本軟件針對ARM做了性能優(yōu)化,盡量用較高版本如php7.4以上。

第一部分

Amazon Linux 2(由亞馬遜云科技提供長期技術(shù)支持并免費(fèi)提供的Linux分支,內(nèi)核做了深度安全和性能優(yōu)化,支持免費(fèi)的內(nèi)核實(shí)時(shí)補(bǔ)丁,操作上近似Red Hat 7)參考步驟如下:

$ sudo yum update-y#升級內(nèi)核和重要補(bǔ)丁

$ sudo reboot#內(nèi)核更新后需要重啟系統(tǒng)

$ uname-r#查看內(nèi)核版本,當(dāng)前為4.14.200-155.322.amzn2.aarch64

$ sudo yum groupinstall-y“Development Tools”#安裝開發(fā)工具包

$ sudo amazon-linux-extras enable golang1.11 corretto8 php7.4 python3.8 ruby2.6#這個(gè)會輸出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開發(fā)工具包(OpenJDK),是OpenJDK的可靠版本并通過TCK認(rèn)證,Corretto包括安全修復(fù)和性能增強(qiáng),垃圾回收調(diào)度,防止內(nèi)存不足的情況,以及改進(jìn)的監(jiān)視,報(bào)告和線程管理,并提供長期支持,亞馬遜在內(nèi)部以數(shù)千種生產(chǎn)服務(wù)運(yùn)行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#如果有內(nèi)核更新,需要重啟系統(tǒng)(當(dāng)前沒有)

$ uname-r#查看內(nèi)核版本,當(dāng)前為5.4.0-1029-aws,update前后并沒有變化

$ sudo apt install-y build-essential#安裝開發(fā)工具包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

方法二 如果基于傳統(tǒng)方式安裝請參考下面步驟,以Corretto為例:

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

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

首先導(dǎo)入Corretto公有密鑰,將存儲庫添加到系統(tǒng)列表

$ sudo apt update

$ sudo apt install-y java-1.8.0-amazon-corretto-jdk#如果希望基于java8環(huán)境

$ 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環(huán)境

$ $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#官網(wǎng)下載所需版本

$ tar xzf redis-6.0.9.tar.gz#解壓縮

編譯階段,這里有2個(gè)選擇,選擇(1)使用默認(rèn)的jemalloc

$ cd redis-6.0.9/deps#進(jìn)入這個(gè)目錄

$ make hiredis jemalloc linenoise lua geohash-int

$ cd..#回到redis主目錄

$ make

選擇(2)使用MALLOC

$ cd redis-6.0.9

$ make MALLOC=libc

安裝完畢可以運(yùn)行下面測試

$ make test#驗(yàn)證redis安裝成功,底部可以提到:“o/All tests passed without errors!”

$./src/redis-server&#后臺運(yùn)行redis服務(wù)

$./src/redis-cli#運(yùn)行redis客戶端

127.0.0.1:6379>ping#測試redis工作正常

PONG

另外還可以運(yùn)行redis自帶測試工具./src/redis-benchmark進(jìn)行性能測試

第四部分

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代實(shí)例和Amazon Graviton2系列實(shí)例,看看在相同vCPU下,您的應(yīng)用性能提升是否滿意。

立即登錄,閱讀全文
AWS
版權(quán)說明:
本文內(nèi)容來自于亞馬遜云科技,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多