前回、ニフティクラウドの標準ドライブと高速ドライブの比較を行ってみましたが、現在使用している物理サーバーとニフティクラウドの間でのストレージ性能比較も知りたい、というご意見をいただいたのでストレージのベンチマーク比較を行ってみました。
- 比較用の物理サーバーを用意
- ニフティクラウドにWindowsサーバーを用意
- ベンチマークソフトはCrystalDiskMark
- ベンチマーク結果
- 物理サーバーからニフティクラウドに移行する際の指針(ストレージ編)
比較用の物理サーバーを用意
今回比較用に用意したのは、まさに自社のマシンルームで稼動しているWindows Server 2012 R2がインストールされている作業用サーバー。スペックは以下の通りです。
機種 | HP ProLiant DL360 G6 |
---|---|
CPU | Intel Xeon E5506(2.13GHz 1プロセッサー4コア) |
メモリ | 18GB |
HDD | 2.5inch 500GB(SATA 5400rpm)×4本をRAID 5構成 |
RAIDキャッシュ | 512MB(Read 25%:Write 75% 設定) |
構成としてはHDDが回転数の低いSATAディスクのため、性能的にはやや低めという感じです。
もし高速な15000rpmのSASディスクなどを使っている場合には、単純計算で大体3倍のIOPSが出ると考えていただいてもよいでしょう。
IOPSは細かいI/Oを行う際に影響するので、データベースやメールサーバーなどで性能に影響を及ぼします。
ニフティクラウドにWindowsサーバーを用意
対するニフティクラウド側は、東日本(east-2)リージョンに、e-small4タイプ(1vCPU・4GB)のWindowsサーバーを作成し、Cドライブが標準ドライブ、Dドライブが高速ドライブという構成としています。
余談ですが、Windowsサーバーの場合、RDP接続になりますが、Macの場合だとMicrosoft Remote Desktopアプリを使って接続します。ただ、キー配列がJISではなかったりと、やや使いにくいのが難点です。
Windowsサーバーをバリバリ使う人はWindows端末(あるいはMac上のWindows仮想マシン)から接続した方が良さそうです。
ベンチマークソフトはCrystalDiskMark
ベンチマークソフトには、今回はWindowsでの比較ということで、hiyohiyo氏が作成している「CrystalDiskMark」を使用しました。
パラメーターの設定が行えますが、RAIDコントローラーのキャッシュ(512MB)の影響を考慮して、ランダムデータを1GiBと4GiB用意し、5回読み書きテストを行う設定でベンチマークテストを行ってみました。
ベンチマーク結果
結果は以下のグラフのようになりました。 結果のうち、いくつかの特徴を挙げてみましょう。
シーケンシャルI/Oはニフティクラウドが高速
まずシーケンシャルな読み書きですが、ニフティクラウド側はサイズやキューの変化に関係なく安定した性能が出ていますが、物理サーバー側はシーケンシャルな書き込みで性能の落ち込みが見られます。
Seq Read | Seq Write | Seq Read Q32T1 | Seq Write Q32T1 | ||
---|---|---|---|---|---|
標準ディスク | 1GiB | 241.0 | 243.7 | 328.7 | 297.7 |
高速ディスク | 1GiB | 363.4 | 269.9 | 413.6 | 286.0 |
DL360 G6 | 1GiB | 216.2 | 47.4 | 233.5 | 199.5 |
Seq Read | Seq Write | Seq Read Q32T1 | Seq Write Q32T1 | ||
---|---|---|---|---|---|
標準ディスク | 4GiB | 235.7 | 241.6 | 332.4 | 302.2 |
高速ディスク | 4GiB | 352.2 | 270.5 | 387.5 | 290.4 |
DL360 G6 | 4GiB | 167.6 | 21.6 | 208.3 | 204.1 |
CrystalDiskMarkの内部的な動作によると、マルチキューの場合は128KiBブロック、シングルキューの場合には1MiBブロックでの読み書きを行っているとのことなので、RAIDコントローラーが大きめのブロックの書き込みに弱い(逆に細かいブロックの書き込みに最適化されている)のかもしれません。
ちなみに、マルチキューは本来SATAディスクのNCQ(Native Command Queuing)のテスト用のパラメーターですが、今回はブロックサイズが変化したり、OSのI/Oスケジューリングによる並列処理性能をテストしていることになっているのではないかと推測しています。
ランダムI/Oもニフティクラウドが高速
ブロックサイズの小さい4Kサイズを見てみると、こちらも全般的にニフティクラウドの方が高い性能を示しています。むしろ、SATAディスクを使っている物理サーバーには細かいI/Oを行わせるのは少し酷なテストになってしまっています。
Random Read 4K | Random Write 4K | Random Read Q32T1 4K | Random Write Q32T1 4K | ||
---|---|---|---|---|---|
標準ディスク | 1GiB | 12.74 | 13.94 | 58.13 | 56.69 |
高速ディスク | 1GiB | 90.94 | 15.64 | 57.08 | 54.64 |
DL360 G6 | 1GiB | 0.687 | 22.42 | 4.789 | 17.48 |
Random Read 4K | Random Write 4K | Random Read Q32T1 4K | Random Write Q32T1 4K | ||
---|---|---|---|---|---|
標準ディスク | 4GiB | 19.14 | 14.13 | 67.45 | 58.24 |
高速ディスク | 4GiB | 20.6 | 17.95 | 59.18 | 52.95 |
DL360 G6 | 4GiB | 0.597 | 6.464 | 3.365 | 14.07 |
ただし、1GiBのシングルキュー、ランダム書き込みのみ物理サーバーが高い性能を示しており、キャッシュなどがうまくハマった結果なのかもしれません。
ベンチマークテストを行っていると、内部的な動作を詳細にプロファイリングしないと理由を正しく説明できないような結果が出てくることがあり、いつも悩まされます(そして大体スルーします)。
物理サーバーからニフティクラウドに移行する際の指針(ストレージ編)
以上の結果から、もし物理サーバーからニフティクラウド上にサーバーを移行させたい場合の指針が導かれます。
以下の指針は、物理サーバーが「まあよくある構成」(アバウトな言い方ですが・・)であることを想定しています。
- ストレージに負荷がかからないようなサーバーの場合には、まったく心配はありません。
- シーケンシャルな読み書きが多い場合には、ニフティクラウドは同等かそれ以上の性能を示しているので、性能的にはそれほど心配はないでしょう。
- ランダムな読み書きが多い場合には、物理サーバー側で特別にストレージを強化していない限りは心配はないでしょう。
特別なストレージ強化とは、HDDの本数を大幅に増やしてRAID 1+0の構成にしていたり、SSDをキャッシュやストレージに使用しているような場合です。
ただ、これらの構成が取られるようになったのは最近のことですから、クラウドに移行を行いたい物理サーバーがそのようになっていることは少ないと考えられます。
もし、クラウド上にそれなりのストレージ性能を求めるようなサーバーを持ってくる場合、ストレージ性能で勝負するのではなくデータベースであればメモリを使ったチューニングで性能を向上させるなど、アプリケーション、ミドルウエア側での対処をまずは考えるべきでしょう。
今回は皆さんに試していただきやすいベンチマークソフト「CrystalDiskMark」を使ってみました。
皆さんもぜひ、お手元のPCやサーバーでテストしてみて、私の結果と比べてみてください。
注:本計測は、あくまで筆者の環境を使った計測時点での値であり、計測環境・計測時間によって異なる場合あります。参考程度に留めておいてください。