これからパブリッククラウドを利用するにあたり、様々な観点から性能を比較するかと思います。今回はGCEインスタンスで使える永続ディスクで性能比較してみました。
性能比較をするためにベンチマーク測定ツール「fio」を利用しました。記事内で「fio」のインストール方法から実行するコマンドをサンプルとして記載します。細かな条件下での性能が気になる、という方は記事を参考に実施してみてください。
目次
性能比較のディスクについて
性能比較をした際のインスタンスタイプ、ディスクとサイズは下記の通りです。
今回はHDDとSSDの性能を比較するということで同一サイズのディスクで比較してますが、GCPのディスクはサイズの増減によって性能がリニアに変化しますので、ご注意ください。
インスタンスタイプ(OS) | n1-standard-4(CentOS7) |
---|
種類 | サイズ |
---|---|
標準永続ディスク(HDD) | 500GB |
SSD 永続ディスク | 500GB |
性能比較の手法について
冒頭でも触れましたが、ベンチマーク測定ツール「fio」を利用し、取得した情報から下記の観点で性能比較を実施しました。
IOPS:1秒間に行なう読み書きの回数のこと。数値が大きい方が良い。
スループット:1秒間に処理できる能力のこと。数値が大きい方が良い。
レイテンシ:データの転送リクエストを出してから、その転送が終了するまでの時間のこと。数値が低い方が良い。
比較条件
ファイルサイズ | ブロックサイズ |
---|---|
2GB | 4KB |
2GB | 8KB |
2GB | 16KB |
2GB | 32KB |
2GB | 512KB |
2GB | 32MB |
計測方式 | 備考 |
---|---|
Seq Read | 順次読み取り |
Seq Write | 順次書き込み |
Random Read | ランダム読み取り |
Random Write | ランダム読み取り |
fio インストール方法
今回、性能比較で使用したOSはCentOS7です。fioのインストールは下記コマンドで行ないました。
$ sudo yum install -y fio
「ifo –version」コマンドを実行し、バージョン情報が出力されればインストール成功です。
$ ifo --version
fio-3.1
fio 実行コマンド
今回、下記の fioコマンドを実行し性能検証をしました。
ファイルサイズは 「-size=」で指定、ブロックサイズは「-bs=」で指定することができます。
# 計測方式 Seq Read
$ fio -filename=/[任意のファイルパス] -direct=1 -rw=read -bs=4k -size=2G -numjobs=64 -runtime=10 -group_reporting -name=file1
# 計測方式 Seq Write
$ fio -filename=/[任意のファイルパス] -direct=1 -rw=write -bs=4k -size=2G -numjobs=64 -runtime=10 -group_reporting -name=file1
# 計測方式 Random Read
$ fio -filename=/[任意のファイルパス] -direct=1 -rw=randread -bs=4k -size=2G -numjobs=64 -runtime=10 -group_reporting -name=file1
#計測方式 Random Write
$ fio -filename=/[任意のファイルパス] -direct=1 -rw=randwrite -bs=4k -size=2G -numjobs=64 -runtime=10 -group_reporting -name=file1
性能比較結果について
下記が各計測方式での性能比較結果となります。
ブロックサイズを 4KB とした場合
Seq Read – 4KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 20.1k | 82.4MB/s | 4 msec |
SSD 永続ディスク | 17.6k | 72.2MB/s | 10 msec |
Seq Write – 4KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 30.0k | 127MB/s | 4 msec |
SSD 永続ディスク | 17.6k | 72.1MB/s | 10 msec |
Random Read – 4KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 770 | 3154kB/s | 100 msec |
SSD 永続ディスク | 17.5k | 71.7MB/s | 4 msec |
Random Write – 4KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 1541 | 6315kB/s | 50 msec |
SSD 永続ディスク | 17.6k | 72.1MB/s | 10 msec |
上記結果から、
- Seq Read/Seq Write の場合、標準永続ディスク(HDD)の方がパフォーマンスが良い
- Random Read/Random Writeの場合、SSD永続ディスクの方がパフォーマンスが良い
となりました。
ブロックサイズを 8KB とした場合
Seq Read – 8KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 8372 | 68.6MB/s | 10 msec |
SSD 永続ディスク | 12.3k | 101MB/s | 10 msec |
Seq Write – 8KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 13.7k | 112MB/s | 10 msec |
SSD 永続ディスク | 14.9k | 122MB/s | 4 msec |
Random Read – 8KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 751 | 6157kB/s | 100 msec |
SSD 永続ディスク | 16.7k | 136MB/s | 4 msec |
Random Write – 8KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 1463 | 11.0MB/s | 50 msec |
SSD 永続ディスク | 17.6k | 144MB/s | 4 msec |
上記結果から、
- 全ての計測パターンにおいてSSD永続ディスクの方がパフォーマンスが良い
となりました。
ブロックサイズを 16KB とした場合
Seq Read – 16KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 6179 | 101MB/s | 10 msec |
SSD 永続ディスク | 10.1k | 165MB/s | 10 msec |
Seq Write – 16KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 6774 | 111MB/s | 10 msec |
SSD 永続ディスク | 9549 | 156MB/s | 10 msec |
Random Read – 16KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 716 | 11.7MB/s | 100 msec |
SSD 永続ディスク | 13.2k | 217MB/s | 10 msec |
Random Write – 16KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 1340 | 21.0MB/s | 50 msec |
SSD 永続ディスク | 15.4k | 253MB/s | 10 msec |
上記結果から、
- ブロックサイズ8KBと同様に全ての計測パターンにおいてSSD永続ディスクの方がパフォーマンスが良い
となりました。
ブロックサイズを 32KB とした場合
Seq Read – 32KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 3893 | 128MB/s | 20 msec |
SSD 永続ディスク | 7742 | 254MB/s | 10 msec |
Seq Write – 32KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 3867 | 127MB/s | 20 msec |
SSD 永続ディスク | 7708 | 253MB/s | 10 msec |
Random Read – 32KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 657 | 21.6MB/s | 100 msec |
SSD 永続ディスク | 7733 | 253MB/s | 10 msec |
Random Write – 32KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 1145 | 37.5MB/s | 100 msec |
SSD 永続ディスク | 7728 | 253MB/s | 10 msec |
上記結果から、
- ブロックサイズ8KB/16KBと同様に全ての計測パターンにおいてSSD永続ディスクの方がパフォーマンスが良い
となりました。
ブロックサイズを 512KB とした場合
Seq Read – 512KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 242 | 127MB/s | 500 msec |
SSD 永続ディスク | 483 | 253MB/s | 250 msec |
Seq Write – 512KB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 242 | 127MB/s | 250 msec |
SSD 永続ディスク | 483 | 253MB/s | 250 msec |
Random Read – 512K | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 186 | 97.6MB/s | 500 msec |
SSD 永続ディスク | 483 | 254MB/s | 250 msec |
Random Write – 512K | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 207 | 109MB/s | 500 msec |
SSD 永続ディスク | 483 | 254MB/s | 250 msec |
上記結果から、
- 全ての計測パターンにおいてSSD永続ディスクの方がパフォーマンスが良い
- SSDでは面白いことにSeqWrite以外は全部同じ数字になりました
となりました。
ブロックサイズを512KB以上に指定していくと、
- IOPSの値が小さく
- スループットの値が小さく
- レイテンシの値が大きなる
という傾向となりました。
下記が参考までにブロックサイズを 32MB とした場合の計測結果です。
ブロックサイズを 32MB とした場合
SeqRead – 32MB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 3 | 124MB/s | >= 2000 msec ※ 1 |
SSD 永続ディスク | 7 | 253MB/s | >= 2000 msec |
SeqWrite – 32MB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 3 | 129MB/s | >= 2000 msec |
SSD 永続ディスク | 7 | 255MB/s | >= 2000 msec |
Random Read – 32MB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 3 | 121MB/s | >= 2000 msec |
SSD 永続ディスク | 7 | 253MB/s | >= 2000 msec |
Random write – 32MB | IOPS | スループット | レイテンシ |
---|---|---|---|
標準永続ディスク(HDD) | 3 | 119MB/s | >= 2000 msec ※1 |
SSD 永続ディスク | 7 | 258MB/s | >= 2000 msec ※1 |
上記の結果から、
- シーケンシャルとランダムの両方で、SSD永続ディスクの方がパフォーマンスが良い
- SeqRead / Random Readの場合、標準永続ディスク(HDD)とSSD永続ディスクでIOPSとスループット約2倍の性能差あり
※ 1…今回した計測ツールのfioでは2000 msec(2秒)を超えるレイテンシは[>= 2000 msec]としてまとめられる。
という結果になりました。
まとめ
今回は冒頭でも触れた条件下で ベンチマーク測定ツール「fio」 を使い、性能比較を実施しました。
今回の比較条件
インスタンスタイプ | n1-standard-4 |
---|
ファイルサイズ | ブロックサイズ | 検証結果 |
---|---|---|
2GB | 4KB | ブロックサイズを 4KB とした場合 |
2GB | 8KB | ブロックサイズを 8KB とした場合 |
2GB | 16KB | ブロックサイズを 16KB とした場合 |
2GB | 32KB | ブロックサイズを 32KB とした場合 |
2GB | 512KB | ブロックサイズを512KB とした場合 |
2GB | 32MB | ブロックサイズを 32MB とした場合 |
最後に各計測方式(Seq Read/Seq Write/Random Read/Random Write)ごとの性能推移をまとめました。
※グラフ作成の都合上、ブロックサイズ4KB~32KBの性能推移となります。
ブロックサイズ4KBのシーケンシャル性能(Seq Read/Seq Write)において、一部(4KBのケースのみ)HDDの方が性能優位のあるケースがありましたが、それ以外のケースにおいては全てSDDに性能優位があるという結果になりました。以下、各グラフを参照ください。
システムの要件に応じて、ファイルサイズやブロックサイズを変更し実施することでまた違った結果が出てくるかもしれません。
細かな条件下での性能が気になる、という方は本記事を参考に実施してみてください。
また、今回はディスクのサイズをそれぞれ500GBで試しましたが、SSD、HDDともにディスクサイズを上げることでIOPS、スループットともに向上しますので、より高いIO性能が必要な場合にはサイズを増やしてみてください。
今後もapps-gcpではGCPにおける性能調査を行って参ります。
※ 弊社ではクラウドエース(Cloud Ace)というGCPの導入・運用支援サービスを提供しておりますので、ご興味のある方はこちらまでお問い合わせください。あらゆるGCPサービスのサポートが可能です。