2012年2月20日月曜日

フラッシュメモリのストライピングは善か悪か?

SSDなど、フラッシュメモリを用いたストレージデバイスは非常に高速です。このようなデバイスをストライピングするとさらに上を目指せる、、、ように感じられますが、実はストライピングで常にアプリケーションの性能が上がるわけではありません。


デバイス単体、2台ストライプのレイテンシ特性

以下のグラフは、フラッシュメモリデバイスへのランダム4KB書き込み時のレイテンシ分布(ドライブ単体および2台をストライプ)を示したものです。

グラフ1



左側がいちばんレイテンシが低い状態、右にいけばいくほどレンテンシが増えていった状態を示していおり、線が左に寄っているのは、すなわち高速に応答していることを示しています。

デバイス単体の場合(赤)、レイテンシ分布は非常に高速な状態(1)に偏っており良好な状態です。ストライプした場合(青)、先と比べると(2)の値が高くなっていて、つまりレイテンシが大きくなっていると言うことになります。この状態であれば間違いなく赤、つまりデバイス単体の性能のほうが応答が早いことになります。

この結果ですが、すこし条件を変えて測定してみると —— 以下のようになります。

グラフ2



このグラフでは、ストライプ構成(青)のほうがデバイス単体(赤)よりよいレイテンシ性能を示しています。

条件の違いは?

この先の2つのグラフ、一体何を変えたと思いますか?  答えはI/Oスレッド数です。

グラフ1 …… 1スレッド
グラフ2 …… 64スレッド

つまりグラフ1の場合よりグラフ2の場合のほうが大きなワークロードがかかっています。つまりワークロード次第でレイテンシ分布は変化します。

さて。
デバイス単体で使ったほうがお得でしょうか?
それとも、ストライピングしておいたほうがお得でしょうか?

ヒント

  • 複数デバイスにストライプすると、各デバイスからの応答を待ち合わせる必要があるため、レイテンシが幾らか悪化する。

  • 転送するデータのサイズに比例して、フラッシュメモリのレイテンシは変化する。

0 件のコメント:

コメントを投稿