ニフクラ ブログ

ニフクラ/FJcloud-Vやクラウドの技術について、エンジニアが語るブログです。

ニフティクラウドと物理サーバーを比較する(ストレージ編)

前回、ニフティクラウドの標準ドライブと高速ドライブの比較を行ってみましたが、現在使用している物理サーバーとニフティクラウドの間でのストレージ性能比較も知りたい、というご意見をいただいたのでストレージのベンチマーク比較を行ってみました。

比較用の物理サーバーを用意

今回比較用に用意したのは、まさに自社のマシンルームで稼動しているWindows Server 2012 R2がインストールされている作業用サーバー。スペックは以下の通りです。

機種HP ProLiant DL360 G6
CPUIntel Xeon E5506(2.13GHz 1プロセッサー4コア)
メモリ18GB
HDD2.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はニフティクラウドが高速

まずシーケンシャルな読み書きですが、ニフティクラウド側はサイズやキューの変化に関係なく安定した性能が出ていますが、物理サーバー側はシーケンシャルな書き込みで性能の落ち込みが見られます。

ニフティクラウドと物理サーバーを比較する(ストレージ編)/シーケンシャルIO

 Seq ReadSeq WriteSeq Read Q32T1Seq Write Q32T1
標準ディスク1GiB241.0243.7328.7297.7
高速ディスク1GiB363.4269.9413.6286.0
DL360 G61GiB216.247.4233.5199.5

 Seq ReadSeq WriteSeq Read Q32T1Seq Write Q32T1
標準ディスク4GiB235.7241.6332.4302.2
高速ディスク4GiB352.2270.5387.5290.4
DL360 G64GiB167.621.6208.3204.1

CrystalDiskMarkの内部的な動作によると、マルチキューの場合は128KiBブロック、シングルキューの場合には1MiBブロックでの読み書きを行っているとのことなので、RAIDコントローラーが大きめのブロックの書き込みに弱い(逆に細かいブロックの書き込みに最適化されている)のかもしれません。

ちなみに、マルチキューは本来SATAディスクのNCQ(Native Command Queuing)のテスト用のパラメーターですが、今回はブロックサイズが変化したり、OSのI/Oスケジューリングによる並列処理性能をテストしていることになっているのではないかと推測しています。

ランダムI/Oもニフティクラウドが高速

ブロックサイズの小さい4Kサイズを見てみると、こちらも全般的にニフティクラウドの方が高い性能を示しています。むしろ、SATAディスクを使っている物理サーバーには細かいI/Oを行わせるのは少し酷なテストになってしまっています。

ニフティクラウドと物理サーバーを比較する(ストレージ編)/ランダムIO

 Random Read 4KRandom Write 4KRandom Read Q32T1 4KRandom Write Q32T1 4K
標準ディスク1GiB12.7413.9458.1356.69
高速ディスク1GiB90.9415.6457.0854.64
DL360 G61GiB0.68722.424.78917.48

 Random Read 4KRandom Write 4KRandom Read Q32T1 4KRandom Write Q32T1 4K
標準ディスク4GiB19.1414.1367.4558.24
高速ディスク4GiB20.617.9559.1852.95
DL360 G64GiB0.5976.4643.36514.07

ただし、1GiBのシングルキュー、ランダム書き込みのみ物理サーバーが高い性能を示しており、キャッシュなどがうまくハマった結果なのかもしれません。

ベンチマークテストを行っていると、内部的な動作を詳細にプロファイリングしないと理由を正しく説明できないような結果が出てくることがあり、いつも悩まされます(そして大体スルーします)。

物理サーバーからニフティクラウドに移行する際の指針(ストレージ編)

以上の結果から、もし物理サーバーからニフティクラウド上にサーバーを移行させたい場合の指針が導かれます。

以下の指針は、物理サーバーが「まあよくある構成」(アバウトな言い方ですが・・)であることを想定しています。

  • ストレージに負荷がかからないようなサーバーの場合には、まったく心配はありません。
  • シーケンシャルな読み書きが多い場合には、ニフティクラウドは同等かそれ以上の性能を示しているので、性能的にはそれほど心配はないでしょう。
  • ランダムな読み書きが多い場合には、物理サーバー側で特別にストレージを強化していない限りは心配はないでしょう。

特別なストレージ強化とは、HDDの本数を大幅に増やしてRAID 1+0の構成にしていたり、SSDをキャッシュやストレージに使用しているような場合です。

ただ、これらの構成が取られるようになったのは最近のことですから、クラウドに移行を行いたい物理サーバーがそのようになっていることは少ないと考えられます。

もし、クラウド上にそれなりのストレージ性能を求めるようなサーバーを持ってくる場合、ストレージ性能で勝負するのではなくデータベースであればメモリを使ったチューニングで性能を向上させるなど、アプリケーション、ミドルウエア側での対処をまずは考えるべきでしょう。

今回は皆さんに試していただきやすいベンチマークソフト「CrystalDiskMark」を使ってみました。

皆さんもぜひ、お手元のPCやサーバーでテストしてみて、私の結果と比べてみてください。

注:本計測は、あくまで筆者の環境を使った計測時点での値であり、計測環境・計測時間によって異なる場合あります。参考程度に留めておいてください。