maroon1stの(昔は)技術日記(だった)?

当初が技術日記だった気もしますが、現在はそうでもないです

本格SEもすなる、技術ブログといふものを、駄目SEもしてみむとて、するなり

AzureとAWSでベンチマークしてみた

最近記事を書いていなかった、、、orz
というのは置いといて、今日はGlobal Windows Azure Boot Camp 2014 in Japanに参加してみました。
基本的にAWS陣営の人なので、若干アウェイ感を感じつつ参加しましたが、大変勉強になりました。
イベントの中身は他の方々が書かれると思うので、イベント中に気になって検証してみた事を書きます。

気になった事

ある方が、AzureとAWSベンチマーク結果を出されていたのですが、AWS側がM3インスタンスだったんですね。結果は当然Azureのが良かったです。公平に見て、AWSは仮想サーバのパフォーマンスが悪い傾向が有ります。
でも、AWSをやっている方は分かっていると思いますが、CPUとメモリの分量で考えるとC3インスタンスを比較すべきだと思います。なので、パフォーマンスがどの程度改善されたかが気になりました。

じゃあ確認するか!

と言う事で、検証にて見ました。

まず検証する

検証対象は、これです。

環境 インスタンス CPU メモリ OS
Azure XL(A4) 8 cores 14 GB CentOS 6.5
AWS c3.2xlarge 8 cores 15 GB Amazon Linux AMI 2014.03
AWS c3.2xlarge 8 cores 15 GB CentOS 6.5

Linuxなので、ベンチマークツールは定番のUnixBench(Version 5.1.3)を使っています。
並列度が8の結果はこんな感じでした。

項目 Index Score
Azure(CentOS 6.5) 2,624.1
AWS(Amazon Linux) 1,934.7
AWS(CentOS 6.5) 1,840.6

色々な方が公開されている結果だと、M1系インスタンスとの比較の場合はAzureがAWSの3倍位だったので、C3系になって随分良くなっています。

再度検証する

やった後に気が付いたのですが、この結果は準仮想化(paravirtual)なので完全仮想化(HVM)の場合も比較する必要があります。
そうして、HVMで取った結果が以下になります。
CentOS 6.5のHVM AMIが無かったのでRHELを使いました。

項目 Index Score
Azure(CentOS 6.5) 2,624.1
AWS HVM(Amazon Linux) 3,401.9
AWS HVM(RHEL 6.5) 4,619.7

なんと、逆転してます!
完全仮想化に比べて準仮想化の方がデバイスのアクセスでパフォーマンスが有利と言われていましたが、ファイルコピーを中心に大幅な向上が見られました。

三度検証する

でも、AzureなのにLinux系のベンチマークって一方的な気がすると思いました。だったらWindowsでもベンチとってみます。
Windowsでの検証対象は、これです。エディションが異なりますが、パフォーマンスには大きな影響がないと思っています。

環境 インスタンス CPU メモリ OS
Azure XL(A4) 8 cores 14 GB Windows Server 2012 Datacenter Edition
AWS c3.2xlarge 8 cores 15 GB Windows Server 2012 Standard Edition

使用ツールは、CrystalDiskMark 3.0.3とCrystalMark 2004R3を使用しました。
ディスクI/Oは以下のようになりました。

Read
Sequence(MB/s) 512K(MB/s) 4K(MB/s) 4K QD32(MB/s)
Azure 1627 1377 54.32 193.4
AWS(EBS) 103.7 98.29 8.44 46.96
AWS(Ephemeral:SSD) 103.7 98.29 8.44 46.96
Write
Sequence(MB/s) 512K(MB/s) 4K(MB/s) 4K QD32(MB/s)
Azure 20.88 42.49 2.036 2.034
AWS(EBS) 30.83 30.89 4.221 11.07
AWS(Ephemeral:SSD) 30.83 30.89 4.221 11.07

ReadはAzureが驚異的なパフォーマンスを叩出しています。Azureはディスクのキャッシュを上手く利かせているのでしょうか?

次に総合的なベンチマークをしてみました。

Mark
Azure 137,043
AWS 285,259

やっぱりAWSの方が速いです。

まとめ

現在では、AzureとAWSを比べると、AWSの方がパフォーマンスが良いです。
しかし、C3は最近出たインスタンスなので世代が異なります。

インスタンス CPU CPU発売時期
Azure XL(A4) AMD Opteron 4171HE 2011年 3月
AWS c3.2xlarge Intel Xeon E5-2680 v2 2013年 Q3

CPUの世代が2年半違うので、あくまで現在の比較結果です。
今後Azureのインスタンスも新世代が出ると思われますので、その時にまた比較してみたいと思います。

最後に

新規インスタンスはHVMを使っとけ!!!