坂元と申します。

HPのサーバにInfortrend社のiSCSI RAIDを接続して利用しようとしているのですが、
謎の30秒ペナルティが発生して困っております。

FreeBSD:
 ハード: HP DL320 G5p
 OSバージョン: 7.2-RELEASE、7.2+*1のパッチ、7_STABLE
  *1: http://lists.freebsd.org/pipermail/freebsd-scsi/2008-February/003387.html
RAID: Infortrend EonStor S12E-G1133-2, 1TB SATA*12 RAID6/5

これをクロスケーブルで直接接続しています。

症状:大量のデータを書き込もうとすると、30秒間のフリーズが頻発する

最初に問題に気付いたのは、ddを使って1MBから10倍ずつ書き込むサイズを増やしていく
テストをしていた時でした。下の試行では、100MBまではそれなりの値が出ているのです
が、1GB連続して書き込もうとすると、1MBpsにがくんと落ちてしまっています。

# dd if=/dev/zero of=/raid/t.img bs=1024 count=1000
1000+0 records in
1000+0 records out
1024000 bytes transferred in 0.008301 secs (123358339 bytes/sec)
(以下、コマンドと結果だけ示します)
# dd if=/dev/zero of=/raid/t.img bs=1024 count=10000
10240000 bytes transferred in 0.175166 secs (58458869 bytes/sec)
# dd if=/dev/zero of=/raid/t.img bs=1024 count=100000
102400000 bytes transferred in 1.785327 secs (57356441 bytes/sec)
# dd if=/dev/zero of=/raid/t.img bs=1024 count=1000000
1024000000 bytes transferred in 895.287328 secs (1143767 bytes/sec)

何回か調べたところ、書き込む容量によって再現性があるわけではなく、100MBとか10MB
でも極端に遅くなることがありました。

そこでddコマンドを実行しておいてRAIDのアクセスランプの状況を見てみたところ、ddコ
マンドが終了するまでの間、コントローラのbusyランプがしばらく点灯→30秒ほど消灯→し
ばらく点灯という状態を繰り返していました。これをヒントにtcpdumpでパケットを観察
したところ、iSCSサーバから変なack応答が届いたり、あるはずのack応答が無かったりし
て、FreeBSD側のサーバが応答待ちでストップした後、タイムアウトして再送しているよ
うでした(添付ファイル)。タイムスタンプをみると、毎回ほぼきっかり30秒で再送してい
るので、どこかのタイムアウトなんだろうと判断しました。

現象を確認後、以下のような試行錯誤をしてみましたが、いずれも効果ありませんでした。
・間にplanexのGbEハブを挟む
・ifconfigで強制的にmediaを100baseTXに落とす
・http://lists.freebsd.org/pipermail/freebsd-scsi/2008-February/003387.htmlの
  パッチを当ててカーネルを再構築
・7_STABLEにアップデート
・バッファの増量(/etc/sysctl.conf)
   net.inet.tcp.sendspace=196608
   net.inet.tcp.recvspace=196608
   net.inet.udp.maxdgram=196608
   net.inet.udp.recvspace=196608
   net.local.stream.sendspace=196608
   net.local.stream.recvspace=196608
   net.local.dgram.maxdgram=196608
   net.local.dgram.recvspace=196608
   net.inet.raw.recvspace=196608
   net.inet.raw.maxdgram=196608
・bgeのJumbo frame化、はBCM5714コントローラでは対応していないということで試せず
・Intel PRO 1000 CT(emドライバ)への変更
  - tcpdumpで'IP bad-len 0'が出たので、net.inet.tcp.tso=0に変更
   http://unix.derkeiler.com/Mailing-Lists/FreeBSD/current/2008-02/msg00186.html
・emのJumbo frame化
  - http://www.infortrend.com/japan/doc/appNote/APP_iSCSI_bottom_up_v1.1.pdfより
    EonStorのMTUは9014バイトということだったので、em側も合わせた。

RAID装置の販売店の方にも問い合わせているところですが、せめて30秒のペナルティを
1秒とかにできないかと思っています。が、それらしいパラメータを見つけられていません。

どなたかこの30秒という値を決めている箇所に心当たりありませんでしょうか?ソースの
書き換えとカーネル再構築ぐらいでしたら試せます。あるいは、他に試すことがありまし
たら助言いただけるとありがたいです。

よろしくお願いします。

--
坂元 英紀
 e-mail: h...@on-sky.net
¡ ³í‚ȒʐM‚̃Lƒƒƒvƒ`ƒƒ

00:53:15.230030 IP bsd.60821 > iscsi.iscsi-target: P 118621869:118621917(48) 
ack 2090589 win 16384
00:53:15.230133 IP iscsi.iscsi-target > bsd.60821: . ack 118621917 win 65520
00:53:15.230136 IP iscsi.iscsi-target > bsd.60821: P 2090589:2090637(48) ack 
118621917 win 65520
00:53:15.230150 IP bsd.60821 > iscsi.iscsi-target: . 118621917:118630109(8192) 
ack 2090637 win 16384
00:53:15.230154 IP bsd.60821 > iscsi.iscsi-target: . 118630109:118638301(8192) 
ack 2090637 win 16384
i’†—ªFƒf[ƒ^‘—MƒpƒPƒbƒg‚ªŒp‘±j
00:53:15.230177 IP bsd.60821 > iscsi.iscsi-target: . 118679261:118687453(8192) 
ack 2090637 win 16384
00:53:15.230181 IP bsd.60821 > iscsi.iscsi-target: P 118687453:118687501(48) 
ack 2090637 win 16384
00:53:15.230317 IP iscsi.iscsi-target > bsd.60821: . ack 118630109 win 65520
00:53:15.230442 IP iscsi.iscsi-target > bsd.60821: . ack 118638301 win 65520
i’†—ªFackƒpƒPƒbƒg‚ªŒp‘±j
00:53:15.230820 IP iscsi.iscsi-target > bsd.60821: . ack 118687501 win 65520
00:53:15.231045 IP iscsi.iscsi-target > bsd.60821: P 2090637:2090685(48) ack 
118687501 win 65520
i‚±‚±‚Ü‚Å‚ª1ƒZƒbƒgB³í‚ȏꍇ‚͈ȉºAÅ‰‚̍s‚©‚ç‚Ì‚â‚èŽæ‚è‚ðŒJ‚è•Ô‚·j
00:53:15.231064 IP bsd.60821 > iscsi.iscsi-target: P 118687501:118687549(48) 
ack 2090685 win 16384

¡ Ž~‚܂鎞‚̒ʐM‚̃Lƒƒƒvƒ`ƒƒi‚»‚Ì‚Pj

00:53:45.436075 IP bsd.60821 > iscsi.iscsi-target: P 131223213:131223261(48) 
ack 2109021 win 16384
00:53:45.436179 IP iscsi.iscsi-target > bsd.60821: . ack 131223261 win 65520
00:53:45.436182 IP iscsi.iscsi-target > bsd.60821: P 2109021:2109069(48) ack 
131223261 win 65520
00:53:45.436199 IP bsd.60821 > iscsi.iscsi-target: . 131223261:131231453(8192) 
ack 2109069 win 16384
i’†—ªFƒf[ƒ^‘—MƒpƒPƒbƒg‚ªŒp‘±j
00:53:45.436231 IP bsd.60821 > iscsi.iscsi-target: P 131288797:131288845(48) 
ack 2109069 win 16384
00:53:45.436366 IP iscsi.iscsi-target > bsd.60821: . ack 131231453 win 65520
i’†—ªFackƒpƒPƒbƒg‚ªŒp‘±j
00:53:45.436870 IP iscsi.iscsi-target > bsd.60821: . ack 131288845 win 65520
00:53:45.437095 IP iscsi.iscsi-target > bsd.60821: P 2109069:2109117(48) ack 
131288845 win 65520
i‚±‚±‚܂ł͐³íj
00:53:45.536685 IP bsd.60821 > iscsi.iscsi-target: . ack 2109117 win 16384
i‚±‚±‚ŁAŽŸ‚̃ŠƒNƒGƒXƒg('P'ƒpƒPƒbƒg)‚Å‚Í‚È‚­AFreeBSD‘¤‚©‚çack‚ª‘—M‚³‚ê‚éj
00:53:45.536721 IP iscsi.iscsi-target > bsd.60821: . ack 131288845 win 65520
iiscsi‘¤‚©‚ç131288845‚Ìack‚ªÄ‘—‚³‚ê‚éB‚±‚ÌŽž“_‚Å30•bƒtƒŠ[ƒY)

i30•bŒãAFreeBSD‘¤‚©‚烊ƒNƒGƒXƒgÄ‘—j
00:54:15.438183 IP 192.168.0.1.60821 > 192.168.0.100.iscsi-target: P 
131288845:131288893(48) ack 2109117 win 16384
00:54:15.438282 IP 192.168.0.100.iscsi-target > 192.168.0.1.60821: . ack 
131288893 win 65520
iˆÈ‰ºA’ʏí‚̒ʐM‚ª‘±‚­j


¡ Ž~‚܂鎞‚̒ʐM‚̃Lƒƒƒvƒ`ƒƒi‚»‚Ì‚Qj

00:53:15.231064 IP bsd.60821 > iscsi.iscsi-target: P 118687501:118687549(48) 
ack 2090685 win 16384
00:53:15.231170 IP iscsi.iscsi-target > bsd.60821: . ack 118687549 win 65520
00:53:15.231173 IP iscsi.iscsi-target > bsd.60821: P 2090685:2090733(48) ack 
118687549 win 65520
00:53:15.231189 IP bsd.60821 > iscsi.iscsi-target: . 118687549:118695741(8192) 
ack 2090733 win 16384
i’†—ªFƒf[ƒ^‘—MƒpƒPƒbƒg‚ªŒp‘±j
00:53:15.231219 IP bsd.60821 > iscsi.iscsi-target: P 118753085:118753133(48) 
ack 2090733 win 16384
00:53:15.231356 IP iscsi.iscsi-target > bsd.60821: . ack 118695741 win 65520
i’†—ªFackƒpƒPƒbƒg‚ªŒp‘±j
00:53:15.231858 IP iscsi.iscsi-target > bsd.60821: . ack 118753133 win 65520
00:53:15.232084 IP iscsi.iscsi-target > bsd.60821: P 2090733:2090781(48) ack 
118753133 win 65520
i‚±‚±‚܂ł͐³íj
00:53:15.232110 IP bsd.60821 > iscsi.iscsi-target: P 118753133:118753181(48) 
ack 2090781 win 16384
i‚±‚±‚ŁA–{—ˆ‚ ‚é‚Í‚¸‚Ìiscsi‚©‚ç‚Ì ack ƒpƒPƒbƒg‚ª“ž’…‚¹‚¸30•bƒtƒŠ[ƒYj

i30•bŒãAFreeBSD‘¤‚©‚烊ƒNƒGƒXƒgÄ‘—j
00:53:45.422677 IP bsd.60821 > iscsi.iscsi-target: P 130501261:130501309(48) 
ack 2107965 win 16384
00:53:45.422779 IP iscsi.iscsi-target > bsd.60821: . ack 130501309 win 65520
iˆÈ‰ºA’ʏí‚̒ʐM‚ª‘±‚­j

メールによる返信