AWSとGCPでSysbenchベンチマーク

grasys加藤です。

前回、泉水がベンチマークを取りましたが、その続きです。

GCPとAWSでmysql8.0.13を構築して、sysbenchでベンチマークしてみました。

いきなり結論

計測する度にreadの数がバラける!!

とはいうものの、今回の結果ではwriteは概ねGCPの方が高速、readも心の目で見るとGCPの方が数は捌けていました。

chart - result

グラフの概要

横軸はSysbenchのスレッド数(対数目盛)。

縦軸が1分間で処理したクエリ数。

色は次の通り。凡例がわかりにくくてすいません。

AWS GCP
Read ピンク
Write 水色
Queries オレンジ 黄緑

スプレッドシートはこちらに公開しておきます。

sysbench AWS-GCP 201812


計測環境

計測用にMySQLサーバ1台構成(ほぼデフォルト)、Sysbenchクライアントをそれぞれ16coreで起動。ディスクは内蔵50GBと外部500GBに揃えました。

OSはCentOS7です、カーネルはちょっと差があります。yumで持ってきたmysqlとsysbenchは同一バージョン、mysqlのdatadirは外部ディスクに配置。

AWS CentOS7 GCP CentOS7
image ami-9887c6e7 centos-7-v20181210
kernel version 3.10.0-862.3.2.el7.x86_64 3.10.0-957.1.3.el7.x86_64
Size c5d.4xlarge n1-standard-16
bootdisk(SSD) size 50G 50G
attachedisk(SSD) size 500G 500G
zone us-east-1a us-east1-b
cpu platform Skylake Intel Skylake
mysql version 8.0.13 8.0.13
sysbench version 1.0.16 1.0.16

ちなみに月額については泉水が出したものと同一。長期利用割引はありません。

AWS GCP
Instance 497.76 388.36
SSD 50.00 93.50
Sum 547.76 481.86

計測環境

一度の計測につき、5回ずつ1分Runを実施。その平均を記載しています。スレッド数は16を5回実行、32を5回実行、と繰り返して平均を取りました。

これを6回実行しています。

MySQLについては datadir と次の2つのパラメータだけを変更しています。

max_connections=1000
innodb_buffer_pool_size=24G

Sysbenchのパラメータです。スレッド数は変化します。毎度、cleanupとprepareも挟みます。

sysbench oltp_read_write
    --threads=${thread_num}
    --time=60 \
    --db-driver=mysql \
    --mysql-host=${hostname} \
    --mysql-port=3306 \
    --mysql-user=sysbench \
    --mysql-password=sysbench \
    --mysql-db=sbtest \
    --mysql-ssl=off \
    --mysql-compression=off \
    --mysql-debug=off \
    --mysql-ignore-errors=1213,1020,1205 \
    --mysql-dry-run=off \
    --auto_inc=on \
    --create_secondary=on \
    --mysql_storage_engine=innodb \
    --table_size=10000 \
    --tables=1 \
    run

まとめ

Cockroachのベンチマークに触発されてSysbenchを叩いてみましたが、 何もチューニングしていない状態での比較はちょびっとGCPに軍配があがりました。

しかし想像通り、そんなに差がなかったですね。今はAmazonもGoogleも投資しているのですごい差にはならないのでは?と思っています。 お互いに競争して安く使えるようになっていくとユーザとしてはうれしいですね。