はじめに

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

*2017/06/05:NIFTYクラウドの結果を追加しました。

計測対象:

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

1. 前提知識

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

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)GCPIDCF(HDD)IDCF(SSD)NIFTYNIFTY
ゾーンap-northeast-1asia-northeast1-ahenryluxeast-11east-14
マシンスペックm4.large (2vCPUメモリ8GB)n1-standard-2 (2vCPUメモリ7.5GB)standard.M8 (2vCPUメモリ8GB)standard.M8 (2vCPUメモリ8GB)large (4vCPU×4GB)e-large (4vCPU×4GB)
OSCentOS 7CentOS 7CentOS 7CentOS 7CentOS 7CentOS 7
ディスクサイズ8GB10GB15GB15GB30GB30GB

マシンスペックはAWSのm4.largeに合わせてみました。(※NIFTYクラウドはデモ環境なのでスペックが異なっています)

ディスクサイズは基本ディスクのサイズです。

2.2 ツール

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

2.2.1 fioのインストール

まず、EPELのリポジトリをインストールします。

$ sudo yum install epel-release

追加したリポジトリが有効かどうか確認。

 $ sudo yum repolist all epel*

fioをインストール。

$ sudo yum install fio

2.2.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

3. 計測結果

3.1 ローカルディスクの性能

AWSGCPIDCF(henry)IDCF(lux)NIFTY(east-11)NIFTY(east-14)
Rand-Read-4k311027492664802826704341897
Rand-Write-4k3110181425404134710312753603
Rand-ReadWrite-4k15558841269276663690711848

※ 2017/05/15の実測値です。
※ NIFTY Cloudは2017/06/02の実測値です。

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

3.2 増設ディスクの性能

■ NIFTY Cloudの増設ディスク
NIFTY Cloudの増設ディスクには標準ディスク、高速ディスク、フラッシュドライブの3種類があり、高速ディスクはAとBの2系統があります(性能・仕様は同じ)。それぞれのディスクのIOPSも計測してみました。

(条件1) ゾーン:east-11, スペック:large

フラッシュ高速A高速B標準
Rand-Read-4k76348345055957053887
Rand-Write-4k48279552895753723158
Rand-ReadWrite-4k27237204242340517783

(条件2) ゾーン:east-14, スペック:e-large

フラッシュ高速A高速B標準
Rand-Read-4k27409675953671453887
Rand-Write-4k16566460454855923158
Rand-ReadWrite-4k9935581321296517783
  • フラッシュドライブと高速ディスクの性能差はそれほど見受けられません。むしろ条件2の場合のように高速ディスクのほうが早いときもあるようです。
  • 標準ディスクでも思ったより性能は低くありません。