‘IPv6’ タグのついている投稿

istgt (iSCSI target) 20110102版 for FreeBSD

2011年1月2日 日曜日

更新>istgt 2011/01/03版

今年最初のリリースになります。
前回のはシーケンシャル書き込みが多いと問題が発生します。
まだまだバグがあるので、新設の送信スレッドを無効にする為の定義を
istgt_iscsi.cに追加しました。
従来の挙動で使う場合は先頭の方にあるコメント部分を有効にして
コンパイルしてください。(手抜きです)
なお、「QueueDepth 0」の設定ではスレッド実行する必要がないので
今回の修正はもとから影響を受けません。

istgt (tarball): istgt-20110102.tar.gz

修正版をご利用ください。

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20110102.tar.gz
# cd istgt-20110102
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20110102.tar.gz) = b2947d5ecf84802b49824da6f27e3ca8
SHA256 (istgt-20110102.tar.gz) = 02abaf48ea772f08738e7c4b8812fbcf73c708fd0cd90acbffd2a3f6a4277493

主な修正点:
シーケンシャル書き込みの結果を送信スレッドで処理するように変更
ISTGT_DISABLE_SENDER_THREAD を istgt_iscsi.c に追加

istgt (iSCSI target) 20101230版 for FreeBSD

2010年12月31日 金曜日

更新>istgt 2011/01/02版

今回からFreeBSD8.2もサポート対象にしました。
FreeBSD 7.3以降 or 8.2以降で正しく作成できることを保証します。

今年最後のリリースです。
ちょっとまだ中途半端な感じがしますが、改良版をアップしました。
6コアCPUを最大限に活用する為、スレッド数を2個から3個に分割しました。
今後はシングルコアCPUのパフォーマンスは捨てて、3コア以上で
最大速度が出るように調整する予定です。

※GbE1ポートしかない場合はどのCPUでも大差ない気がします。

いろいろ試したのですが、ZFSの書き込みが遅いらしく、
ランダムライトの性能はあまり期待できなかったです。
きっとローカルキャッシュをすれば幸せになれる気がする。
ランダムリードに関してはちょっとだけ早くなった気がする。
だけど、CPU割り込みがすごくて結構重いです。

 
(クリックで拡大)

この結果から察するにキャッシュに使うSSDは書き込み速度100MB/sを
出せないとあまり意味がない気がする。
とりあえずリードを妨げないように物理メモリ4GB以上をARCに
割り当てた方が良いです。

参考用:
http://shell.peach.ne.jp/aoyama/archives/1292
http://shell.peach.ne.jp/aoyama/archives/1045

istgt (tarball): istgt-20101230.tar.gz
修正版をご利用ください。

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20101230.tar.gz
# cd istgt-20101230
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20101230.tar.gz) = be7e032b7e61d0c9b66f59e221ff4ebe
SHA256 (istgt-20101230.tar.gz) = 6c39d646a4d1d6b4679709c9aa5c8e83360d11a8a20e9dd502b519265033d5bc

主な修正点:
接続情報のtypo修正(Thanks to Kevin Day)
SCSIステータスとリードデータを送信するスレッドを作成
各PDU毎のメモリ割り当て回数を削減

istgt (iSCSI target) 20100707版 for FreeBSD

2010年7月7日 水曜日

更新>istgt 2010/12/30版

istgtも七夕エディションに(謎)
isbootとの組み合わせで気づいた点を修正しました。
また、一か月ほどWindows7のディスクレス環境を支えて来れたというのを
踏まえてPortsの更新も行います。
ちなみに4KBとか小サイズIOを大量に投げるとギガビットイーサの遅さも
相まって、ありえないほどの遅延が生じます。
これは今後の課題と言うことで。

参考用:
http://shell.peach.ne.jp/aoyama/archives/1077
http://shell.peach.ne.jp/aoyama/archives/1107
http://shell.peach.ne.jp/aoyama/archives/1114

istgt (tarball): istgt-20010707.tar.gz

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100707.tar.gz
# cd istgt-20100707
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100707.tar.gz) = 2774a6487b65a182648503eb76c2c4a3
SHA256 (istgt-20100707.tar.gz) = 98b910da623a127f575e35f45dfc7f8f5ec3334fc260b28cbd31b83ec32ca868

主な修正点:
DefaultTime2Waitの比較を最大値を取るように修正
ターゲットが存在しない場合に検索した記録を残すように修正

istgt (iSCSI target) 20100606版 for FreeBSD 7.x

2010年6月6日 日曜日

更新>istgt 2010/07/07版

ロックの衝突による速度低下を低減する為にロック範囲を変更しました。
単一のターゲットではまったく効果ありませんが、複数ターゲットを
設定している場合は、衝突回避が期待できます。

iSCSIパラメータをターゲット毎に指定できるようになりました。
省略時は従来通りグローバル設定が適用されます。
なお、一部のキーは機能未実装のため現時点では設定変更できません。

新規のコンフィグキー(Global):
  InitialR2T Yes
  ImmediateData Yes
  DataPDUInOrder Yes
  DataSequenceInOrder Yes
  ErrorRecoveryLevel 0

新規のコンフィグキー(LogicalUnit):
  MaxOutstandingR2T 16
  DefaultTime2Wait 2
  DefaultTime2Retain 60
  FirstBurstLength 262144
  MaxBurstLength 1048576
  MaxRecvDataSegmentLength 262144
  InitialR2T Yes
  ImmediateData Yes
  DataPDUInOrder Yes
  DataSequenceInOrder Yes
  ErrorRecoveryLevel 0

istgt (tarball): istgt-20010606.tar.gz

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100606.tar.gz
# cd istgt-20100606
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100606.tar.gz) = cdd56ef75a2b03eeed694f73811dc720
SHA256 (istgt-20100606.tar.gz) = 42cafd6560bb1e99465c592f45bc8fb2333f76320d2d343162ecd5dc94218e5e

主な修正点:
グローバルの状態ロックをターゲット毎に変更
各ターゲット毎にローカル設定を持てるように設定を追加
InitialR2T, ImmediateData, DataPDUInOrder, DataSequenceInOrder,
ErrorRecoveryLevelの設定を追加
LUNリセット時にファイルの再オープンをするように変更

istgt (iSCSI target) 20100525版 for FreeBSD 7.x

2010年5月26日 水曜日

更新>istgt 2010/06/06版

先日の版はWindows7がインストールできませんでした。
報告のあった問題と共に修正しました。Portsもすぐに更新をかけます。
20100522をインストールしてしまった場合は、
お手数ですがアップグレードを行うようにしてください。

istgt (tarball): istgt-20010525.tar.gz

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100525.tar.gz
# cd istgt-20100525
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100525.tar.gz) = ccdc37cb3d9b1dc6b8fe9411e824f015
SHA256 (istgt-20100525.tar.gz) = 3445d1b68b49535d849b83f4b542d05bd2fed32d2066836e39b8ab8dff8a66c1

主な修正点:
特定条件下でR2Tが送信されない問題を修正しました。
メモリ解放間違いを修正しました。
エラー処理が抜けていたのを追加しました。

istgt (iSCSI target) 20100522版 for FreeBSD 7.x

2010年5月22日 土曜日

更新>istgt 2010/05/25版

認証なしを強制するオプションを追加しました。
これによりCHAPのみを要求するイニシエータとの接続を拒否します。
また、CHAPありなしのどちらでもいい場合は認証なしを選択します。
その他、細かい調整を行いました。

機能追加したコンフィグキー:
  DiscoveryAuthMethod None
  AuthMethod None

istgt (tarball): istgt-20010522.tar.gz
修正版をご利用ください。

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100522.tar.gz
# cd istgt-20100522
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100522.tar.gz) = a262d060e9edf6a06f0573233df1a8d4
SHA256 (istgt-20100522.tar.gz) = 61345f7b373706180f89834bc54ff4bbd9ae850a03fb7888e008aaccd93c3aff

主な修正点:
認証なしを強制するオプションを追加しました。
readキャッシュの状態をMODESENSEで返すようになりました。

追記:
ChangeLog.jpを更新するのを忘れました…以下を修正点に追加します。
8KB, 16KB, 32KB, 64KB, 128KBの論理ブロック長を追加
とりあえず、動作には影響しないのでこの版でPortsを更新します。

istgt (iSCSI target) 20100521版 for FreeBSD 7.x

2010年5月22日 土曜日

更新>istgt 2010/05/22版

先日の版ではコンパイル時オプションで有効・無効を切り替えできましたが、
設定ファイルで送信するR2Tの最大数を制限できるように修正しました。
最大数=0で無効になり従来通りの処理になります。
実際に送信できる数は、QueueDepthの設定とイニシエータのMaxCmdSNおよび
ExpCmdSNに依存します。

また、8KB以内の小さい書き込みコマンドに対してメモリ割り当てを
毎回行って断片化するのを避ける為に一回で確保するようになりました。
小さいサイズの高速化に関しては落ち着いてから試そうと思っています。

新規のコンフィグキー:
  MaxR2T 32

istgt (tarball): istgt-20010521.tar.gz

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100521.tar.gz
# cd istgt-20100521
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100521.tar.gz) = 5d9939c5df13db68ad852a96620bb8f3
SHA256 (istgt-20100521.tar.gz) = 8a4c46c45eceb956ef7d2927f8c3d4cc8d522014738bfa8921ef4da91cea449d

主な修正点:
WRITEコマンドで先送りするR2T最大数の設定を追加しました。
エラー時にイニシエータ及びターゲットポートを表示するようになりました。
8KB以下のショートパケットにデータ領域を作成しないようになりました。

istgt (iSCSI target) 20100516版 for FreeBSD 7.x

2010年5月16日 日曜日

更新>istgt 2010/05/21版

先の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 (iSCSI target) 20100407版 for FreeBSD 7.x

2010年4月8日 木曜日

更新>istgt 2010/05/16版

NetBSD, Mac OS X, LinuxでブロックデバイスをAuto指定できるように修正してみました。
ただし、動作検証までは行っていないので動かないかもしれません。
この部分はいろいろな報告が欲しいです。
(設定ファイルにない場合の)デフォルト値の変更を行いました。
サンプルの設定ファイルを使っている場合は影響ありません。
ビルド環境を仮定しないようにちょこっとマイナー修正しました。
syslogサーバに大量に記録されてCPUパワーとネットワーク帯域が
もったいないので、トレースモードでない場合は同一イニシエータからの
重複予約(常に成功する)の警告を出さないように修正しました。

今回の修正とは直接関係しないのですが、以前書いたようにFreeBSD7.3の環境に7.1から移行しているので、今後は7.1での通常検証は行いません。
また、FreeNAS 0.7.1 nightly buildの作成にESXi4のVMFSとして利用する関係でそちらのフォローも多くなると期待しています。

istgt (tarball): istgt-20010407.tar.gz

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100407.tar.gz
# cd istgt-20100407
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100407.tar.gz) = d606f4e1520f486325910e105da1bf30
SHA256 (istgt-20100407.tar.gz) = 9ff40e921187c1ff78bad3585cc6c6ac05796921fdc906342a9e0e3cc74121c2

主な修正点:
NetBSD, Mac OS X, LinuxでブロックデバイスのAuto指定を考慮しました。
ビルド環境をなるべく特定しない仕組みを導入しました。
既定の設定ファイルがない特殊な環境でのデフォルト値を修正しました。
トレースモードが無効な場合は重複予約の警告を出さないようになりました。

istgt (iSCSI target) 20100125版 for FreeBSD 7.x

2010年1月25日 月曜日

更新>istgt 2010/04/07版

ABORT_TASKからエラーリカバリーができなくなる可能性がある問題に
対応するため若干の修正を加えました。
Ivan Vorasさんから提案とパッチを頂きましたので追加してみました。

istgt (tarball): istgt-20010125.tar.gz
修正版をご利用ください。

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20100125.tar.gz
# cd istgt-20100125
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20100125.tar.gz) = 1af4006dd185b2e2326a356ef17dc2cc
SHA256 (istgt-20100125.tar.gz) = 028dd131300d24b2c425543ef84805735a9361cac79437c829a5062f84532618

主な修正点:
内部でスレッド名を保持するようになりました。
実行待ちのタスクを強制終了させるフラグなどを追加しました。
スレッド条件待ち時間の最小を5秒まで短縮しました。