先のCTアダプタの結果が残念なので・・・効率アップを図ってみました。
また、ESXiでの利用を想定してデフォルトの値を修正してみました。
(FirstBurstLength 64K => 256K, MaxBurstLength 256K => 1M)
通常はキューイングした後に送信されるR2Tコマンドを、
キューに入れる前に送信して後からデータPDUを回収する
という方法を取ってみました。
補足:
キューの深さと同数のライトバッファを用意するという意味です。
結果は以下のSS通りで、キャッシュが利用される領域において
15%以上の高速化ができました。
実際の速度は利用するエクステントの速度に制限されるとはいえ、
シングルパスのシーケンシャルで100MB/sを達成できたのはよかった。
デュアルパスでラウンドロビンするとリード190MB/s、ライト170MB/sと
単体HDDではおそらく処理が間に合わない程の速度が出ます。
さて、こうやって見ると…はい、ショートI/Oの性能が悪いですね。
こうしてさらに深みにはまっていくと。
あまりにも基本すぎて今まで書いていませんでしたけど、
マルチスレッドで動くのが前提なのでシングルコアのCPUの場合は、
ここで期待しているような値が出ることはないと思います。
※ラウンドロビンは処理データ(R/W)が偏って期待通りに行かない事があります:-)
新規のコンフィグキー:
MaxOutstandingR2T 16
DefaultTime2Wait 2
DefaultTime2Retain 60
修正したコンフィグキー:
FirstBurstLength 262144
MaxBurstLength 1048576
istgt (tarball): istgt-20010516.tar.gz
作成方法:
# cd /path/to/work
# tar zxf /path/to/istgt-20100516.tar.gz
# cd istgt-20100516
# ./configure
# make
# make install
# make install-doc
デーモンの再起動方法:
# /usr/local/etc/rc.d/istgt restart
MD5 (istgt-20100516.tar.gz) = 358eec46c4cddc3a5944a49f96509e68
SHA256 (istgt-20100516.tar.gz) = fdb3d82d74d09bfc06204158147c8c7b63e642f67b83e74527875db3424e663e
主な修正点:
CHAPの乱数生成に arc4random を利用するようになりました。
シーケンシャル書き込みの処理を改善しました。
MaxOutstandingR2T, DefaultTime2Wait, DefaultTime2Retain が設定ファイルで変更可能になりました。
デフォルトの設定値を変更しました。




早速、istgtの20100516版を使ってみました
古いバージョンでは、ライト時にだいたい200Mbps前後でしたが、
新バージョンでは、230Mbps強出てます。
この差は結構大きいのでとても助かります。
これからも、どんどんスピードアップしてください(^^)
ありがとうございます。
高速化はできる範囲で少しずつやって行こうと思っています。
まずは安定動作するのが大前提なので。