AWS、GCP、さくらのクラウド でUnixBench CPU性能比較

  • 7
    いいね
  • 0
    コメント

はじめに

パブリッククラウドを選定する際にはどのような情報を参考にしてますでしょうか?

  • コスト
  • ストレージ
  • CPUコア数
  • ファシリティ
  • API

などの公開された情報を参考にされているのではないでしょうか。

さて、上記のような情報はHPで公開されておりますが、マシンのCPU性能はなかなか判断しにくいと思います。実際どの程度なのでしょうか。
ベンダーごとの実装方法や、CPUのアーキテクチャで変わってくるものなのでしょうか。

実際にAWS、GCP、さくらインターネットの三社のクラウドマシンでベンチマークを取りまして、スコアを参考に比較していきます。筆者のお財布事情から、無料利用枠のあるパブリッククラウドベンダーを選定しております。

この記事の前半では、ベンチマークツールを紹介しまして、OSにダウンロードします。ベンチマークツールが動作するところまで案内します。
後半ではベンチマークツールを使ってCPUの性能を計測します。

また付随して、仮想化を実装する基盤が、AWS=Xenで、GCPとさくら=KVMなので、そのあたりのスコアの違いも見れればいいなと思ってます。

※このベンチマークは2017年1月3日に計測しております。

ベンチマークツール

UnixBench
Linux/Unix系OSで使われている定番のCPUベンチマークツールです。
標準ではCPUにまつわる12項目のテストを実施します。12項目のテストから総合スコアを計算します。
1コアあたりのスコアと、複数コアでのスコアの両方を計算できます。

テスト項目 内容
Dhrystone 2 using register variables 2つのレジスタを使ってシステム(整数)プログラミングの性能
Double-Precision Whetstone 浮動小数点演算性能
Execl Throughput 関数の呼び出し性能
File Copy 1024 bufsize 2000 maxblocks ファイルのコピー(バッファサイズ1024バイト)
File Copy 256 bufsize 500 maxblocks ファイルのコピー(バッファサイズ256バイト)
File Copy 4096 bufsize 8000 maxblocks ファイルのコピー(バッファサイズ4096バイト)
Pipe Throughput パイプ処理のスループット
Pipe-based Context Switching パイプベースのコンテキストのスイッチング処理
Process Creation プロセス作成
System Call Overhead システムコールでのオーバーヘッド
Shell Scripts (1 concurrent) 1つだけシェルスクリプトの実行
Shell Scripts (8 concurrent) 8つ同時にシェルスクリプトの実行

環境

Amazon Web Services
OS:Amazon Linux AMI release 2016.09

Google Cloud Platform
OS:CentOS 7.3

さくらのクラウド
OS:CentOS 7.2

UnixBenchをダウンロード

まずUnixBenchを動かすためのモジュールをインストールします。

# yum install -y wget gcc make perl perl-Time-HiRes patch

次にUnixBenchのパッケージファイルをGoogleからダウンロードして展開します。

# wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz
# tar xvzf UnixBench5.1.3.tgz

UnixBenchのデフォルト設定だと16コア以上のCPUが計測できません。
制限を解放するパッチファイルがGoogleから公開されています。ダウンロードしてパッチを適用します。

# wget http://storage.googleapis.com/google-code-attachments/byte-unixbench/issue-4/comment-1/fix-limitation.patch
# patch Run fix-limitation.patch 

それか「UnixBench/Run」の109行目、112行目、1332行目の3行を変更します。どちらでも大丈夫です。

UnixBench/Run
 109   'system'    => { 'name' => "System Benchmarks", 'maxCopies' => 0 },
 112   'misc'      => { 'name' => "Non-Index Benchmarks", 'maxCopies' => 0 }, 
1332    next if ($maxCopies > 0 && $copies > $maxCopies);

ベンチマーク実施

AWS、GCP、さくらの3社でマシンを作成し、UnizBenchを実行します。
AWSのみ、シリーズによりマシン性能が異なるそうなので、汎用インスタンスのM4シリーズと、コンピューティング最適化インスタンスのC4シリーズで計測します。

時間短縮のため5回で実施します

# cd UnixBench
# ./Run -i 5 

Amazon Web Services

リージョン

東京リージョン

CPU

Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz (4600.1 bogomips) Hyper-Threading, x86-64
※汎用インスタンスのM4シリーズで計測してます。

テスト項目ごとのスコア平均:1コア

テスト項目 スコア
2つのレジスタを使ってシステム(整数)プログラミングの性能 2779.7
浮動小数点演算性能 692.8
関数の呼び出し性能 1090.1
ファイルのコピー(バッファサイズ1024バイト) 2991.2
ファイルのコピー(バッファサイズ256バイト) 1929.3
ファイルのコピー(バッファサイズ4096バイト) 6262.8
パイプ処理のスループット 1886.7
パイプベースのコンテキストのスイッチング処理 119.9
プロセス作成 1003.2
システムコールでのオーバーヘッド 2257.8
1つだけシェルスクリプトの実行 1858.1
8つ同時にシェルスクリプトの実行 2087.6

総合スコア

CPUコア数 1コアのスコア 複数コアのスコア
2core(m4.large) 1518.9 2305.4
4core(m4.xlarge) 1582.0 3449.6
8core(m4.2xlarge) 1658.1 5163.9
16core(m4.4xlarge) 1687.2 7564.4

CPU

Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz (5800.2 bogomips) Hyper-Threading, x86-64
※コンピューティング最適化インスタンスのC4シリーズで計測してます。

テスト項目ごとのスコア平均:1コア

テスト項目 スコア
2つのレジスタを使ってシステム(整数)プログラミングの性能 3267.1
浮動小数点演算性能 812.6
関数の呼び出し性能 1189.9
ファイルのコピー(バッファサイズ1024バイト) 3508.8
ファイルのコピー(バッファサイズ256バイト) 2259.1
ファイルのコピー(バッファサイズ4096バイト) 6638.8
パイプ処理のスループット 2208.0
パイプベースのコンテキストのスイッチング処理 127.4
プロセス作成 1020.9
システムコールでのオーバーヘッド 2637.3
1つだけシェルスクリプトの実行 2405.4
8つ同時にシェルスクリプトの実行 4370.3

総合スコア

CPUコア数 1コアのスコア 複数コアのスコア
2core(c4.large) 1690.9 2572.0
4core(c4.xlarge) 1820.3 3924.7
8core(c4.2xlarge) 1836.5 5852.1
16core(c4.4xlarge) 1941.1 8517.2

Google Cloud Engine

リージョン

東京リージョン

CPU

Intel(R) Xeon(R) CPU @ 2.20GHz (4400.0 bogomips) Hyper-Threading, x86-64

テスト項目ごとのスコア平均:1コア

テスト項目 スコア
2つのレジスタを使ってシステム(整数)プログラミングの性能 2738.7
浮動小数点演算性能 683.1
関数の呼び出し性能 780.4
ファイルのコピー(バッファサイズ1024バイト) 2265.0
ファイルのコピー(バッファサイズ256バイト) 1549.2
ファイルのコピー(バッファサイズ4096バイト) 3150.0
パイプ処理のスループット 1192.3
パイプベースのコンテキストのスイッチング処理 238.7
プロセス作成 794.8
システムコールでのオーバーヘッド 1698.0
1つだけシェルスクリプトの実行 1247.1
8つ同時にシェルスクリプトの実行 1694.5

総合スコア

CPUコア数 1コアのスコア 複数コアのスコア
2core 1239.1 1943.2
4core 1445.3 3196.2
8core 1434.1 5113.2
16core 1505.5 7809.0

さくらのクラウド

リージョン

東京リージョン

CPU

Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz (4589.4 bogomips) x86-64

テスト項目ごとのスコア平均:1コア

テスト項目 スコア
2つのレジスタを使ってシステム(整数)プログラミングの性能 2588.7
浮動小数点演算性能 693.4
関数の呼び出し性能 1081.6
ファイルのコピー(バッファサイズ1024バイト) 2739.0
ファイルのコピー(バッファサイズ256バイト) 1849.3
ファイルのコピー(バッファサイズ4096バイト) 4430.6
パイプ処理のスループット 1497.6
パイプベースのコンテキストのスイッチング処理 912.0
プロセス作成 1317.7
システムコールでのオーバーヘッド 2647.4
1つだけシェルスクリプトの実行 1456.1
8つ同時にシェルスクリプトの実行 1368.2

総合スコア

CPUコア数 1コアのスコア 複数コアのスコア
2core 1652.1 2321.8
4core 1338.7 3381
8core 1485.7 4691.9
16core 1270.6 6446.6

UnixBenchスコアまとめ

テスト項目ごとのスコア平均:1コア

テスト項目 AWS(M4) AWS(C4) GCP さくら
2つのレジスタを使ってシステム(整数)プログラミングの性能 2779.7 3267.1 2738.7 2588.7
浮動小数点演算性能 692.8 812.6 683.1 693.4
関数の呼び出し性能 1090.1 1189.9 780.4 1081.6
ファイルのコピー(バッファサイズ1024バイト) 2991.2 3508.8 2265.0 2739.0
ファイルのコピー(バッファサイズ256バイト) 1929.3 2259.1 1549.2 1849.3
ファイルのコピー(バッファサイズ4096バイト) 6262.8 6638.8 3150.0 4430.6
パイプ処理のスループット 1886.7 2208.0 1192.3 1497.6
パイプベースのコンテキストのスイッチング処理 119.9 127.4 238.7 912.0
プロセス作成 1003.2 1020.9 794.8 1317.7
システムコールでのオーバーヘッド 2257.8 2637.3 1698.0 2647.4
1つだけシェルスクリプトの実行 1858.1 2405.4 1247.1 1456.1
8つ同時にシェルスクリプトの実行 2087.6 4370.3 1694.5 1368.2

複数コアの総合スコア

CPUコア数 AWS(M4) AWS(C4) GCP さくら
2core 2305.4 2572.0 1943.2 2321.8
4core 3449.6 3924.7 3196.2 3381
8core 5163.9 5852.1 5113.2 4691.9
16core 7564.4 8517.2 7809.0 7446.6

まとめ

  • 物理的なCPUは、AWSがパフォーマンスの高いものを使用している。
  • レジスタの性能と、浮動演算装置の性能はおおむね横ばい。
  • バッファサイズの大きいファイルのコピーではAWSが優れている。
  • パイプ処理のスループットはAWSが優れているが、コンテキストのスイッチング処理ではさくらが4倍くらいの差をつけていた。
  • プロセスの作成ではさくらが優れている。
  • システムコールでのオーバーヘッドは、KVMを使っているGCPとさくらで差が開いた。
  • シェルスクリプトの実行処理ではAWSが優れている。
  • CPUの総合性能はコンピューティング最適化インスタンス(AWS)が優れている。
  • スコアはコア数に比例するが、等倍ではない。

UnixBenchでスコアをとってきました。CPUの性能ではC4シリーズが優勢でした。
同じ仮想化基盤を使っているのに関わらず、システムコールのオーバーヘッドがGCPとさくらとで差が開いたのが気になりました。昨年、東京にデータセンターが開設されたばかりということで、GCPの開発がまだ進んでいないのか、または、さくらが特別な実装を行っているのではないでしょうか。

お付き合いいただき、ありがとうございました。
この記事がパブリッククラウドの選定の参考になれば幸いです。