AWS が設計した Arm ベースの AWS Graviton Processors で Golang の CLI を動かしてみた

Posted on

この記事は AWS re:Invent 2018 の現地から書いています。先ほど Monday Night Live が行われ、そこで AWS が設計した Arm ベースの AWS Graviton Processors が発表されました!

AMD プロセッサを搭載した M5a, R5a が発表されたばかりですが、今日からは 3 種類のプロセッサから選ぶことができます。この写真はエポックメイキングですね。

さっそく起動してみた

まだ東京リージョンでは使えないので、バージニアリージョンで 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 のようにコンパイルし直すだけで済むアプリケーションは試してみる価値がありそうですね!