[AWS vs GCP] EC2 vs GCE 〜CPU性能〜


EC2とGCEの性能比較を行います。

今回比較するのはCPU性能です。
使用するインスタンスのマシンタイプは性能が低いt2.micro等ではなく、実際のサービスで使用しているコンピューティング最適化インスタンスのc3.largeと、それに近い性能を持つGCEのn1-highcpu-2となります。

他のマシンタイプの測定結果も追加する可能性はありますが、まずはこれらのマシンタイプでベンチマークします。

比較するインスタンス

項目 AWS EC2 GCE
マシンタイプ c3.large
(vCPU x 2 + メモリ 3.75 GB)
オンデマンドインスタンス
n1-highcpu-2
(vCPU x 2、メモリ 1.8 GB)
料金(1ヶ月連続使用) $93.70
リザーブドインスタンスを適用した場合( ※1):$70.81
$46.50

*1:リザーブドインスタンスにも数種類の適用があります。(公式ドキュメントはこちら)
スタンダードとコンバーティブル、そして1年ないし3年の予約期間、前払い有無によって料金が異なります。
上記はスタンダード1年間前払いなしの料金となります。
(2017年10月時点)

共通設定

項目 内容
ストレージ SSD 10GB
OS Ubuntu16.04

ベンチマーク設定手順

ベンチマークツールはUnixBenchを使用します。
設定手順は以下を参考にさせて頂きました。
https://blog.apar.jp/web/7042/

上記の比較するインスタンスを基に、EC2とGCEそれぞれインスタンスを作成・起動後、お約束でインストール済みのパッケージを最新版にアップデートします。

sudo apt-get update

UnixBenchを実行するには、makeとgccが必要なのでパッケージをインストールします。

sudo apt-get install make gcc

ベンチマーク結果ログの保存先を作成します。

mkdir /var/log/bench

UnixBenchをインストールします。

cd /usr/local/bin/
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz
tar zxvf UnixBench5.1.3.tgz
cd UnixBench

試しにUnixBenchを実行してみましょう。
ここでは実行できるかが確認出来れば良いので、途中で終了して構いません。

./Run

   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #
   Version 5.1.3                      Based on the Byte Magazine Unix Benchmark
   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   January 13, 2011                   johantheghost at yahoo period com

ベンチマーク実行スクリプトの作成
実行時間ごとに一応ログファイルを分けときます。

vi /usr/local/bin/unixbench.sh
#!/bin/sh -
now=$(date "+%Y%m%d%H%M")
log="/var/log/bench/unixbench_${now}.log"

cd /usr/local/bin/UnixBench
echo '==================== START ' `date` '====================' >> $log
./Run >> $LOG 2>&1
echo '==================== END ' `date` '====================' >> $log
echo '' >> $log

exit 0

実行権限を設定

chmod 700 /usr/local/bin/unixbench.sh

cronに登録

crontab -e
00 * * * * /usr/local/bin/unixbench.sh

手順は以上です。

ベンチマーク結果

1時間毎に計10回測定を行った結果がこちらです。
※計測は2017年10月時点

(System Benchmarks Index Score)

No AWS EC2 GCE
1 2227.8 2209.6
2 2224.6 2168.3
3 2228.1 2182.7
4 2222.8 2160.7
5 2230.5 2098.3
6 2219.6 2139.8
7 2228.5 2168.3
8 2209.9 2159.1
9 2222.3 2166.7
10 2209.6 2150.3
AWS EC2 GCE
平均値 2222.37 2160.38
最大値 2230.5 2209.5
最小値 2209.6 2098.3

結果を見るとEC2の方がインデックススコアが平均的に高いことが分かりました。

最後に

CPU性能はEC2の方がわずかに高くはありますが、あくまでc3.largen1-highcpu-2の比較なので、他のマシンタイプで比較したらまた違う結果が出るかもしれません。
ただ現場で使用しているサービスの基盤をAWSからGCPに移行検討している段階なので、この調査結果は検討材料の一つとします。
コストも含めて考慮すると個人的にはGCEに軍配が上がりますが、コストの話はまたの機会ということで。