Microsoft AzureでLinux仮想マシンのベンチマーク

Microsoft Azureの「仮想マシン」でLinuxサーバーのベンチマークをとって、ほかのクラウドサービスのベンチマーク結果と比較してみました。
Azure以外のベンチマーク結果は、先日のJAWS-UGで発表したデータです。
ベンチマークの条件としては、ほかのクラウドサービスも含めて下記のとおり。

  • 2014年4月に計測。
  • 日本のデータセンターを使用。
  • OSはCentOS 6もしくはAmazon Linux 2014.03 EBS-Backed AMI
  • ディスクサイズは各サーバータイプのデフォルト。
  • サーバー設定は初期状態から、ユーザー作成、スワップ領域作成などの基本設定を行った程度。
  • Web, DB, アプリサービスは起動していない状態。
  • Amazon Linuxはデフォルトでファイルシステムのnoatimeオプションが有効となっている。

Azureでは下記の3タイプの仮想マシンで計測しました。

  • A1 – 1コア、1.75GB
  • A2 – 2コア、3.5GB
  • A3 – 4コア、7GB

isddbenchによるディスクベンチマーク

dbenchについては、以前書いた以下の記事を参照してください。

・ディスクベンチマークツールdbench
https://inaba-serverdesign.jp/blog/20131203/dbench.html

ベンチマーク結果。


 

Azureは3タイプともほぼ同じ値で、同時実行1で14MB/sec、同時実行4で29MB/secぐらいで、ふだんから「ちょっと遅い」と思っているAWSのEBSよりもかなり遅いです。
これはちょっと見たことがないぐらいの数値で、昔遅いPCのVMware Player上でCentOSを動かしてもこれよりはよい値だったような気がします。。。
実際にパッケージのインストールやコンパイルも他のIaaSより2~3倍時間がかかります。
MySQLなどのデータベースソフトの動作は大丈夫でしょうか。

Azureのアーキテクチャーを調べたところ、仮想マシンのディスクイメージが「Azureストレージ」というストレージサービス上にVHD形式で保存されるそうです。
AWSでいうとS3のようなものでしょうか。
仮想マシンのディスクについては、「ランダムなアクセスと頻繁な更新が可能なように最適化されたブロックストレージ」である「ページBlob」に保存される、とのことですが。。。

仮想マシンには、ホストサーバーのディスクをマウントした(Amazon EC2のエフェメラルディスクのような)ローカルディスクもあるのですが、そのディスクのベンチマーク結果もほぼ同じ値でした。
ddコマンドで書き込みを行ってみたところ、ローカルディスクのほうが圧倒的に速かったので、dbenchの特性によるものかもしれません。

(参考)
・Microsoft Azure Japan Team Blog (ブログ) データ シリーズ: Windows Azure のドライブ、ディスク、イメージについて
https://blogs.msdn.microsoft.com/windowsazurej/2012/07/09/windows-azure-12395/

isdunixbenchによるサーバーベンチマーク

unixbenchの結果。


 

unixbenchの結果はほぼCPUの性能を示すといわれています。
AzureのCPU性能はまずまずといえますね。
AWS EC2よりよい結果となりました。

isdまとめ

Microsoft Azureの「仮想マシン」でLinuxサーバーのベンチマークをとって、ほかのクラウドサービスのベンチマーク結果と比較してみました。
CPUの結果はまずまずですが、ディスクは極端に遅いという結果となりました。

dbenchでは不利なアーキテクチャーなのか、Linuxサーバーだと遅くてWindows Serverはもっと速いのか、何か速くする方法があるのか、ちょっとよくわかりません。
「ディスク性能がサービス全体の性能に比例する」というわけではありませんが、仮想マシン上でMySQLやSQL Serverを稼働させるなど、ディスクアクセスが多いケースでは十分に事前検証を行ったほうがよさそうです。
現在は、新規アカウント作成で1ヶ月間20,500円分無料で使用できます。

(関連記事)
・JAWS-UG札幌で発表しました。~IaaSクラウド比較’14
https://inaba-serverdesign.jp/blog/20140414/jaws-ug_sapporo_iaascloud14.html

Follow me!