fusionio vs huawei

本日、huaweiのPCIeカード型のnandフラッシュカードをお借りしたので、ベンチかけてみました。

12月下旬までお借りできますので、もし、違うオプション、違うツールで確認してほしいという方がいればコメントやフォームからお声をかけていただければと思います。

今回検証するカードは

huawei ES3000 1.2TB:http://enterprise.huawei.com/en/products/itapp/server/high-performance-pcIe-card/hw-194918.htm

です。

ついでにdmmでも50枚以上導入済みのfusion-io社のiodrive2もベンチかけて比較してみます。
fusionio iodrive2 3.0TB:https://www.fusionio.com/products/iodrive2/

■huawei ES3000の主な特徴

Huawei Tecal ES3000はMLCのNANDフラッシュ製品
800GB,1.2TB,2.4TBのタイプがありPCIe (2.0 x8)のインターフェースを持っています。
1.2TBモデルの読み込み時の最大帯域は3.2GB/s書き込み時の最大帯域は1.8GB/sとなっています。
latencyでみると読み込みは8us、書き込みで49usの能力を持つ。

非常にユニークだなと思ったのがFPGAを3つ搭載しFTL、GC、RAIDやECCなどの処理を担うことでホストサーバのCPUをオフロードしてるところ。また、IOスケジューラーをダブルキューとすることで種類の違う命令を別々のキューで処理できるようになっている。この機能により性能の劣化を低減させ、iodrive2よりも2~3倍高速になっている。

価格も半値で設定されているようです。
日本法人は中国本体の開発部門と直接のパスを持っているようで対応が早くなるようです。

ドライバはカーネルそれぞれで専用のものを利用する必要がありますが結構そろっていました。
rhelやCentOS5/6のほとんどのカーネルには対応していると思われる。それ以外のカーネルで利用する場合はhuawei社でドライバをコンパイルしてもらう必要がある。

とにかく論より証拠ベンチいきます。

コマンドはこちらです。

fio –direct=1 –rw=[randread|randwrite] –bs=[1|4|16|32]k –randrepeat=0 -iodepth=32 –name=test –runtime=60 –ioengine=libaio –filename=/dev/[h|f]ioa1

ES3000

size iops b/w latency(iodepth=1)
randread 1 194757 195MB/s 20us
randread 4 198126 793MB/s, 20us
randread 16 163942 2562MB/s 50us
randread 32 101230 3164MB/s 250us
randwrite 1 55334 55MB/s 20us
randwrite 4 153982 615MB/s 20us
randwrite 16 117080 1829MB/s 20us
randwrite 32 58459 1827MB/s 50us

 

iodrive2

size iops b/w latency(iodepth=32)
randread 1 75305 75MB/s 500u
randread 4 77587 310MB/s 500u
randread 16 61895 990MB/s 750u
randread 32 46182 1443MB/s 750u
randwrite 1 80406 80MB/s 5oou
randwrite 4 79840 319MB/s 500u
randwrite 16 64793 1013MB/s 500u
randwrite 32 32234 1007MB/s 1000u

es3000もiodrive2もカタログスペックのbandwidthは出ています。

あと、確かにiodriveよりも2~3倍ほど高速。すごい製品が出てきましたね。

この性能でさらに半値ならお買い得感があるように思います。何枚か購入して実運用してみたいですね。

次にコメントでnumjobsでベンチを取ってみてほしいとのことでしたので、やってみました。

コマンドは下記です。randread

fio –direct=1 –rw=randread –runtime=60 –group_reporting –filename=/dev/hioa1 –name=test –numjobs=32 –bs=[1|4|16|32]k

size iops b/w latency(avg)
randread 1k 508,679 508MB 60us
randread 4k 482,030 1882MB 64us
randread 16k 206,088 3220MB 153us
randread 32k 103,117 3222MB 308us

今までの数あるベンチの結果からiodepthでのベンチは測れるiopsの最大値が200kであるということが分かってきていますが、いまのところのNANDフラッシュ製品であればnumjobsで限界までiopsが測れます。最初のhuaweiの製品のベンチはiodepth=32で測っていますが200kを超えていないのが分かるかと思います。

 

機器貸出の条件として「フリーハンドでのレポートが必要」とのことでしたのでここに書いておこうかな。

題名:ES3000評価レポート

要旨:
カタログスペック通りの値(iops、latency、bandwidth)が出るのか、
ハードウェアインストールやドライバのインストールについて確認する。

イントロダクション:
フラッシュ型のドライブの重要性が増していく中にあっても、このジャンルの製品はfusionio社の1社独走状態。
ちょうど性能的にも価格的にもライバルの存在は必要だと感じていたのですが、
fusionio社の技術はパテントでガチガチに守られていて同じような製品が出たとしてもパフォーマンスに難があるはずだと、根拠もなく考えている節があり他社の検討は行っておりませんでした。
今回、たまたま販社様よりご紹介いただいたES3000は性能でfusionioを超えていますというお話しでしたので、これはと思い評価させていただく機会をいただいた次第です。

パフォーマンス取得方法:
fio –direct=1 –rw=randwrite –bs=16k –randrepeat=0 -iodepth=32 –name=test –runtime=10 –ioengine=libaio –filename=/dev/hioa1

fio結果:このページの上部に記載

まとめ:
ハードウェアインストールの取扱いについては通常のpciカードと同様の扱いやすさだが、キャパシタに手が触れると折れてしまいそうだったのでちょっと怖いかなと感じた。
ドライバインストールについてはドライバがカーネルに依存していてカーネルごとにメーカーにドライバの作成をお願いする必要があるのが難点。20個くらいのカーネルでドライバがすでに用意されているのでその点は良いのだが、
必要なカーネルバージョンのドライバを探すのが面倒でした。カーネルのバージョンを自動で認識して最適なドライバを選択してインストールさせる方式になればいいと思う。
マニュアルについては読みやすく理解しやすいが順序があってない箇所もあったように思う。パフォーマンスについてですが一部カタログスペックに届かない数値もあったが、相対的に見ればライバル機よりも相対的にパフォーマンスが高いことがわかった。
価格的にも半額ということなのでサポート体制次第では弊社としてもラインナップの一つとして加えていければと考えている。

継続調査

下記コマンドにて確認できる項目について
特に「Max bad block rate: 0.112%」この部分がすでに数値が上がっているがなぜなのか確認する。またこのブロックレートがどこまでいくとreadモードになるのかも確認する必要がある。

# hio_info -d /dev/hioa1
hioa Size(GB): 1204
Max size(GB): 1204
Serial number: 030PXS10D4000029
Driver version: 2.0.0.39
Bridge firmware version: 320
Controller firmware version: 320
Battery firmware version: 111
Battery status: OK
Run time (sec.): 1816611
Total IO read: 259518244
Total IO write: 298356159
Total read(MB): 1729073
Total write(MB): 1828273
IO timeout: 0
R/W error: 0
Max bit flip: 5
Average EC: 1
Max bad block rate: 0.112%
Event log: OK
Health: OK

 

hardware

Posted by Akira


PAGE TOP