AWS が設計した Arm ベースの AWS Graviton Processors で Golang の CLI を動かしてみた
この記事は AWS re:Invent 2018 の現地から書いています。先ほど Monday Night Live が行われ、そこで AWS が設計した Arm ベースの AWS Graviton Processors が発表されました!
AMD プロセッサを搭載した M5a, R5a が発表されたばかりですが、今日からは 3 種類のプロセッサから選ぶことができます。この写真はエポックメイキングですね。
What processor do you want? Take your choice! With more on the way. #reInvent pic.twitter.com/ippTL1CjZq
— AWS re:Invent (@AWSreInvent) November 27, 2018
さっそく起動してみた
まだ東京リージョンでは使えないので、バージニアリージョンで a1.medium を起動してみました。 OS は Amazon Linux 2 の Arm 版です。
$ lscpu
Architecture: aarch64
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Model: 3
BogoMIPS: 166.66
NUMA node0 CPU(s): 0
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
アーキテクチャは aarch64
になっていますが、CPU のモデル名などはまだ取得できないようです。 Flags のところを見て分かるとおり、拡張機能は Intel プロセッサと比べるとかなり少ないです。
$ uname -m
aarch64
$ uname -r
4.14.77-81.59.amzn2.aarch64
OS も aarch64
で動いています。
Golang の CLI を動かしてみる
スクリプト言語だと何もしなくても動いてしまうので、以前 Golang で書いた aws-billing という CLI で試してみます。
まず GOARCH=AMD64
でコンパイルしたバイナリが動かないことを確認します。コンパイル済みのバイナリを GitHub からダウンロードします。
$ curl -sSL https://github.com/manabusakai/aws-billing/releases/download/v0.0.2/aws-billing_linux_amd64 -o aws-billing
$ chmod +x aws-billing
$ ./aws-billing
-bash: ./aws-billing: cannot execute binary file
"cannot execute binary file" というエラーになりました。次に手元の macOS で GOARCH=arm64
に変更してコンパイルし、生成されたバイナリを scp でサーバ側に持っていきます。
$ GOOS=linux GOARCH=arm64 go build -o aws-billing aws-billing.go
$ scp aws-billing ec2-user@ec2-34-207-55-100.compute-1.amazonaws.com:~
$ ./aws-billing
USD 0
今度は問題なく実行されました。間違いなく Arm アーキテクチャで動いていますね。
まとめ
まだ AWS Graviton Processors がどの程度の実力を持っているかわかりませんが、Intel や AMD プロセッサに比べると非常に安いです。
Golang のようにコンパイルし直すだけで済むアプリケーションは試してみる価値がありそうですね!