クラウドサーバーサービス(IaaS)の性能比較・ディスク編~IOPSの計測~

  • 5
    Like
  • 0
    Comment

はじめに

 今回は以下のクラウドサーバーを対象にIOPSを計測し、ストレージの性能を比較します。IDCFクラウドについては初期のゾーンであるhenryと最新ゾーンのluxの2種類を計測し、ゾーン間の違いも計測してみます。

計測対象:

  • Amazon Web Services (AWS) (ボリュームタイプ:gp2/SSD)
  • Google Cloud Platform (GCP) (SSD)
  • IDCFクラウド(ゾーン:lux/SSD)
  • IDCFクラウド(ゾーン:henry/HDD)

1. 前提知識

 ディスクの性能がなぜ大事?IOPSとは?
 (自明な方は読み飛ばして下さい:bow:

1.1 仮想化環境とストレージ性能

  • 仮想化環境ではストレージの性能がネックになりやすい
  • HDDはシーケンシャルI/O、SSDはランダムI/Oが得意
  • 仮想化環境では主にランダムアクセスに対する性能が重要になる(複数の仮想マシンからのアクセスが発生するから)

参考:
 IT機器の進化とHDD性能とのギャップ
 ストレージのいろは|ソフトバンク コマース&サービス
 クラウドを加速させるSSD技術 - @IT

1.2 IOPSとは?

  • ストレージ性能を図る指標
  • ディスクが1秒当たりに処理できるI/Oアクセスの数
  • IOPSが高ければ高いほど,高性能なディスクと言える
  • IOPSはブロックサイズが小さいと大きな値になる傾向がある
  • IOPSは読み込みと書き込みの割合で値が大きく変わる

参考:
 サーバー選択の基礎 - Part4 IOPSを理解する:ITpro
 ストレージのいろは|ソフトバンク コマース&サービス

2. 計測方法

2.1 実施環境

  • 対象サーバ
AWS(EC2) GCP IDCF(HDD) IDCF(SSD)
ゾーン ap-northeast-1 asia-northeast1-a henry lux
マシンスペック m4.large(2vCPUメモリ8GB) n1-standard-2(2vCPUメモリ7.5GB) standard.M8 (2vCPUメモリ8GB) standard.M8 (2vCPUメモリ8GB)
OS CentOS 7 CentOS 7 CentOS 7 CentOS 7
ディスクサイズ 8GB 10GB 15GB 15GB

マシンスペックはAWSのm4.largeに合わせてみました。
ディスクサイズはデフォルトのままとします。

2.1 ツール

 ベンチマークツールとしてfioを使用します。

2.1.1 fioのインストール

  • # yum install epel-release
      まず、EPELのリポジトリをインストールします。

  • # yum repolist all epel*   
      追加したリポジトリが有効かどうか確認。   

  • # yum install fio
      fioをインストール。

2.1.2 計測パラメータの設定

 小さめのブロックサイズの方がベストエフォートに近いはずなので、今回はブロックサイズを4KBに設定し、以下のパターンで比較してみます。

  • ランダムリード
  • ランダムライト
  • ランダムリードライト

 パラメータ条件をfioのパラメータ設定ファイルとして準備します。

Rand-Read-4k.fio
[global]
ioengine=libaio
direct=1
ioscheduler=noop
invalidate=1
group_reporting
directory=/home
runtime=60

[Rand-Read-4k]
readwrite=randread
size=4G
bs=4k
iodepth=32
numjobs=1
Rand-Write-4k.fio
[global]
ioengine=libaio
direct=1
ioscheduler=noop
invalidate=1
group_reporting
directory=/home
runtime=60

[Rand-Write-4k]
readwrite=randwrite
size=4G
bs=4k
iodepth=32
numjobs=1
Rand-ReadWrite-4k.fio
[global]
ioengine=libaio
direct=1
ioscheduler=noop
invalidate=1
group_reporting
directory=/home
runtime=60

[Rand-ReadWrite-4k]
readwrite=randrw
size=4G
bs=4k
iodepth=32
numjobs=1

 fioを実行します。
fio -f Rand-Read-4k.fio -filename=/tmp/fio_test -output Rand-Read-4k.result
fio -f Rand-Write-4k.fio -filename=/tmp/fio_test -output Rand-Write-4k.result
fio -f Rand-ReadWrite-4k.fio -filename=/tmp/fio_test -output Rand-ReadWrite-4k.result

2. 計測結果

AWS GCP IDCF(henry) IDCF(lux)
Rand-Read-4k 3110 2749 2664 80282
Rand-Write-4k 3110 1814 2540 41347
Rand-ReadWrite-4k 1555 884 1269 27666

※ 2017/05/15の実測値です。

  • AWSはボリュームタイプをgp2にしたので、3000IOPSがバーストの上限です。これ以上のI/O性能が求められる場合は Provisioned IOPS [PIOPS]を選択するべき、ということですね。
  • IDCFの最新ゾーンであるluxは非常に高いI/O性能を持っていることがわかりました。
  • 同じIDCFでも、古いゾーンであるhenryはluxよりもだいぶディスク性能が劣ることがわかりました。でも、ディスク性能に限って言えばGCPと大差ないようです。