SSDやioDriveといった高速ストレージの性能をチェック――はじめての「さくらの専用サーバ」(4) 3ページ

SSDやioDriveのパフォーマンスをチェック

 さて、ここまでSSDやioDriveといったストレージの特徴について述べてきたが、実際にどの程度のパフォーマンスなのか、気になる人も多いだろう。そこで、簡単にベンチマークテストを実行した結果を紹介していこう。

 今回検証に使用したのは、さくらの専用サーバ・エクスプレスG2シリーズのサーバー(Fujitsu RX100 S7 Xeon 4Core 3.30GHz)だ。ストレージとしてSATA接続のHDDを搭載したものとSSDを搭載したもの、そしてioDriveを搭載したもの3台を使用し、それぞれでストレージおよびMySQLのベンチマークプログラムを実行している。

 実行したベンチマークプログラムは表5のとおりだ。

表5 テストに使用したベンチマークプログラム
プログラム名説明使用したオプションベンチマーク条件の説明
Bonnie++ストレージのRead/Write性能の測定なし
tiobench複数スレッドから同時にI/Oを実行した際の性能を測定-t 8 -f 128 -b 4096 -r 327688スレッドで各スレッド128MBのI/Oを実行(合計1GBのI/Oを実行)
sql-benchMySQLにおいて基本的なテーブル作成やクエリ処理を実行した際の性能を測定なし

 これらのうち、Bonnie++およびtiobenchは以前ネットワーク/ストレージの処理能力をチェックするためのベンチマークツールという記事で紹介しているので、詳しくはそちらを参照していただきたい。また、sql-benchはMySQLの開発者らが配布しているベンチマークツールだ(MySQLのドキュメント)。

 ベンチマークテストを実行させる際は、Linuxカーネルによるファイルシステムキャッシュの影響を極力減らすため、起動時にカーネルオプションとして「mem=512M」を指定し、メモリを512MBのみ認識させた状態で行っている。また、参考としてHDD搭載サーバーについてはこのメモリ制限を行わず、搭載されている16GBすべてを認識させた状態でもベンチマークテストを実行させている。

 なお、今回テストに使用したサーバーのSSDにはIntel 330(180GB×2)が搭載されているが、現行のサービスではより新しいモデルであるデータセンター向けのIntel DC S3500(240GB)に変更されている。そのため、今回のテスト結果よりも現行モデルのほうがより高い性能になっている可能性がある点には留意したい。

ストレージ性能の比較

 それでは、ベンチマークテスト結果を見ていこう。まずはBonnie++によるストレージ性能調査だが、Bonnie++では1バイト/1ブロック(1024KB)単位でのシーケンシャルWriteおよび書き換え、1バイト/1ブロック(1024KB)単位でのシーケンシャルRead、そしてランダムSeekを行って1秒当たりにどれだけの処理を実行できたかを測定している。この結果(表6)を見ると、1バイト単位でのアクセスについてはどれも大差はないものの、ブロック単位でのアクセスや書き換え処理に関してはSSDはHDDの2~3倍程度、ioDriveは5~7倍程度ののパフォーマンスが確認できる。ちなみに、「測定不能」となっているのは処理時間が短すぎて測定できなかったものだ。メモリ16GB搭載時のシーケンシャルReadが測定不能になっているのは、メモリキャッシュが効いているためだと思われる。

表6 Bonnie++ベンチマーク結果(速度)
テスト項目SATASSDioDriveSATA(メモリ16GB)
シーケンシャルWritePer Chr1,214KB/秒1,238KB/秒1,221KB/秒1,234KB/秒
Block101,934KB/秒258,506KB/秒578,389KB/秒106,982KB/秒
Rewrite43,441KB/秒124,805KB/秒260,766KB/秒52,700KB/秒
シーケンシャルReadPer Chr5,793KB/秒5,963KB/秒5,425KB/秒(測定不能)
Block141,667KB/秒300,527KB/秒824,549KB/秒154,720KB/秒
ランダムSeek489KB/秒15,958KB/秒(測定不能)445.8KB/秒

 また、Bonnie++では遅延についても測定されるが、SSDやioDriveは遅延についてもHDDと比べ文字通り桁が違うレベルになっている。

表7 Bonnie++ベンチマーク結果(遅延)
テスト項目SATASSDioDriveSATA(16GB)
シーケンシャルWritePer Chr6,778マイクロ秒8,928マイクロ秒15,134マイクロ秒13,619マイクロ秒
Block558ミリ秒82,634マイクロ秒39,102マイクロ秒326ミリ秒
Rewrite160ミリ秒69,490マイクロ秒30,426マイクロ秒293ミリ秒
シーケンシャルReadPer Chr6,729マイクロ秒2,647マイクロ秒2,598マイクロ秒15,629マイクロ秒
Block40,779マイクロ秒1,463マイクロ秒1,965マイクロ秒72,092マイクロ秒
ランダムSeek1,517ミリ秒1,691マイクロ秒1,250マイクロ秒287ミリ秒

 続いてtiobenchによるベンチマーク結果だが、こちらもBonnie++とほぼ同様の傾向となり、特にランダムアクセスについてはSSDやioDriveのパフォーマンスの高さがうかがえるものになっている(表8、表9)。

表8 tiobenchベンチマーク結果(速度)
テスト項目SATASSDioDriveSATA(16GB)
シーケンシャルWrite83.826MB/秒251.427MB/秒535.675MB/秒92.085MB/秒
ランダムWrite4.727MB/秒170.547MB/秒593.659MB/秒22.201MB/秒
シーケンシャルRead158.834MB/秒712.450MB/秒437.936MB/秒19339.364MB/秒
ランダムWrite2.264MB/秒98.142MB/秒120.311MB/秒18175.686MB/秒
表9 tiobenchベンチマーク結果(遅延)
テスト項目SATASSDioDriveSATA(16GB)
シーケンシャルWrite平均0.326ミリ秒0.108ミリ秒0.052ミリ秒0.004ミリ秒
最大1,427.121ミリ秒1,026.949ミリ秒726.300ミリ秒0.464ミリ秒
ランダムWrite平均5.722ミリ秒0.150ミリ秒0.049ミリ秒0.003ミリ秒
最大19,829.566ミリ秒660.457ミリ秒100.269ミリ秒0.046ミリ秒
シーケンシャルRead平均0.166ミリ秒0.042ミリ秒0.071ミリ秒0.002ミリ秒
最大1,506.043ミリ秒5.169ミリ秒6.984ミリ秒0.039ミリ秒
ランダムRead平均12.931ミリ秒0.305ミリ秒0.258ミリ秒0.002ミリ秒
最大431.807ミリ秒3.576ミリ秒100.640ミリ秒0.036ミリ秒
合計平均4.786ミリ秒0.151ミリ秒0.108ミリ秒0.003ミリ秒
最大19,829.566ミリ秒1,026.949ミリ秒726.300ミリ秒0.464ミリ秒

MySQLのベンチマーク結果

 続いてsql-benchによるMySQLのベンチマークテストだが、結果は表10のようになった。sql-benchでは「ATIS」や「alter-table」など8種類のテストが用意されているが、大きな差が出たのは「create」テストのみだった。このテストはテーブルを作成したり、キーを作成する、といった処理を行うもので、頻繁にディスクアクセスを行うことから差が出たようだ。いっぽう、それ以外のテストでは大きな差はなかった。sql-benchのベンチマークテストではフィールド数が1000、insert関連のベンチマークでは10万件、select関連のベンチマークでは1万行のテーブルでテストが行われているが、この程度のデータ量ではストレージ性能の差は出にくいということのようだ。

表10 sql-benchベンチマーク結果(各テストの実行に要した時間)
テスト項目SATASSDioDriveSATA(メモリ16GB)
ATIS9秒9秒10秒8秒
alter-table2秒11秒10秒3秒
big-tables6秒7秒7秒7秒
connect61秒61秒55秒61秒
create34秒1060秒1031秒53秒
insert410秒411秒426秒444秒
select146秒143秒142秒140秒
wisconsin2秒4秒5秒3秒

大容量を求めないならSSDがおすすめ。よりパフォーマンスが必要ならioDriveの検討も

 以上、非常に簡単なベンチマークテスト結果レポートだったが、比較的手軽に導入できるSSDでもHDDと比較して大幅にパフォーマンス向上が見込めることが分かる。また、それ以上のパフォーマンスが必要だったり、ランダムアクセス性能が必要となる用途であれば、より性能の高いioDriveを検討しても良いだろう。ただ、どちらもストレージ容量はHDDと比較すると少なくなってしまうのは難点だ。

 メモリが潤沢に利用できる場合であれば、読み出しアクセスについてはキャッシュの効果によってそれなりのパフォーマンスが出る場合もあるので、読み出しアクセス中心で多くのストレージ容量が必要、というケースであればメモリを増設してパフォーマンスを稼ぐ、という方針も考えられる。柔軟に構成を選択できるさくらの専用サーバならさまざまなケースにも対応できるだろう。