SSDやioDriveといった高速ストレージの性能をチェック――はじめての「さくらの専用サーバ」(4) 3ページ
SSDやioDriveのパフォーマンスをチェック
さて、ここまでSSDやioDriveといったストレージの特徴について述べてきたが、実際にどの程度のパフォーマンスなのか、気になる人も多いだろう。そこで、簡単にベンチマークテストを実行した結果を紹介していこう。
今回検証に使用したのは、さくらの専用サーバ・エクスプレスG2シリーズのサーバー(Fujitsu RX100 S7 Xeon 4Core 3.30GHz)だ。ストレージとしてSATA接続のHDDを搭載したものとSSDを搭載したもの、そしてioDriveを搭載したもの3台を使用し、それぞれでストレージおよびMySQLのベンチマークプログラムを実行している。
実行したベンチマークプログラムは表5のとおりだ。
プログラム名 | 説明 | 使用したオプション | ベンチマーク条件の説明 |
---|---|---|---|
Bonnie++ | ストレージのRead/Write性能の測定 | なし | – |
tiobench | 複数スレッドから同時にI/Oを実行した際の性能を測定 | -t 8 -f 128 -b 4096 -r 32768 | 8スレッドで各スレッド128MBのI/Oを実行(合計1GBのI/Oを実行) |
sql-bench | MySQLにおいて基本的なテーブル作成やクエリ処理を実行した際の性能を測定 | なし | – |
これらのうち、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が測定不能になっているのは、メモリキャッシュが効いているためだと思われる。
テスト項目 | SATA | SSD | ioDrive | SATA(メモリ16GB) | |
---|---|---|---|---|---|
シーケンシャルWrite | Per Chr | 1,214KB/秒 | 1,238KB/秒 | 1,221KB/秒 | 1,234KB/秒 |
Block | 101,934KB/秒 | 258,506KB/秒 | 578,389KB/秒 | 106,982KB/秒 | |
Rewrite | 43,441KB/秒 | 124,805KB/秒 | 260,766KB/秒 | 52,700KB/秒 | |
シーケンシャルRead | Per Chr | 5,793KB/秒 | 5,963KB/秒 | 5,425KB/秒 | (測定不能) |
Block | 141,667KB/秒 | 300,527KB/秒 | 824,549KB/秒 | 154,720KB/秒 | |
ランダム | Seek | 489KB/秒 | 15,958KB/秒 | (測定不能) | 445.8KB/秒 |
また、Bonnie++では遅延についても測定されるが、SSDやioDriveは遅延についてもHDDと比べ文字通り桁が違うレベルになっている。
テスト項目 | SATA | SSD | ioDrive | SATA(16GB) | |
---|---|---|---|---|---|
シーケンシャルWrite | Per Chr | 6,778マイクロ秒 | 8,928マイクロ秒 | 15,134マイクロ秒 | 13,619マイクロ秒 |
Block | 558ミリ秒 | 82,634マイクロ秒 | 39,102マイクロ秒 | 326ミリ秒 | |
Rewrite | 160ミリ秒 | 69,490マイクロ秒 | 30,426マイクロ秒 | 293ミリ秒 | |
シーケンシャルRead | Per Chr | 6,729マイクロ秒 | 2,647マイクロ秒 | 2,598マイクロ秒 | 15,629マイクロ秒 |
Block | 40,779マイクロ秒 | 1,463マイクロ秒 | 1,965マイクロ秒 | 72,092マイクロ秒 | |
ランダム | Seek | 1,517ミリ秒 | 1,691マイクロ秒 | 1,250マイクロ秒 | 287ミリ秒 |
続いてtiobenchによるベンチマーク結果だが、こちらもBonnie++とほぼ同様の傾向となり、特にランダムアクセスについてはSSDやioDriveのパフォーマンスの高さがうかがえるものになっている(表8、表9)。
テスト項目 | SATA | SSD | ioDrive | SATA(16GB) |
---|---|---|---|---|
シーケンシャルWrite | 83.826MB/秒 | 251.427MB/秒 | 535.675MB/秒 | 92.085MB/秒 |
ランダムWrite | 4.727MB/秒 | 170.547MB/秒 | 593.659MB/秒 | 22.201MB/秒 |
シーケンシャルRead | 158.834MB/秒 | 712.450MB/秒 | 437.936MB/秒 | 19339.364MB/秒 |
ランダムWrite | 2.264MB/秒 | 98.142MB/秒 | 120.311MB/秒 | 18175.686MB/秒 |
テスト項目 | SATA | SSD | ioDrive | SATA(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万行のテーブルでテストが行われているが、この程度のデータ量ではストレージ性能の差は出にくいということのようだ。
テスト項目 | SATA | SSD | ioDrive | SATA(メモリ16GB) |
---|---|---|---|---|
ATIS | 9秒 | 9秒 | 10秒 | 8秒 |
alter-table | 2秒 | 11秒 | 10秒 | 3秒 |
big-tables | 6秒 | 7秒 | 7秒 | 7秒 |
connect | 61秒 | 61秒 | 55秒 | 61秒 |
create | 34秒 | 1060秒 | 1031秒 | 53秒 |
insert | 410秒 | 411秒 | 426秒 | 444秒 |
select | 146秒 | 143秒 | 142秒 | 140秒 |
wisconsin | 2秒 | 4秒 | 5秒 | 3秒 |
大容量を求めないならSSDがおすすめ。よりパフォーマンスが必要ならioDriveの検討も
以上、非常に簡単なベンチマークテスト結果レポートだったが、比較的手軽に導入できるSSDでもHDDと比較して大幅にパフォーマンス向上が見込めることが分かる。また、それ以上のパフォーマンスが必要だったり、ランダムアクセス性能が必要となる用途であれば、より性能の高いioDriveを検討しても良いだろう。ただ、どちらもストレージ容量はHDDと比較すると少なくなってしまうのは難点だ。
メモリが潤沢に利用できる場合であれば、読み出しアクセスについてはキャッシュの効果によってそれなりのパフォーマンスが出る場合もあるので、読み出しアクセス中心で多くのストレージ容量が必要、というケースであればメモリを増設してパフォーマンスを稼ぐ、という方針も考えられる。柔軟に構成を選択できるさくらの専用サーバならさまざまなケースにも対応できるだろう。