坂元と申します。 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ÌLv` 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ªFf[^MpPbgª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ªFackpPbgª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±±ÜŪ1ZbgB³íÈêÍȺAÅÌs©çÌâèæèðJèÔ·j 00:53:15.231064 IP bsd.60821 > iscsi.iscsi-target: P 118687501:118687549(48) ack 2090685 win 16384 ¡ ~ÜéÌÊMÌLv`i»ÌPj 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ªFf[^MpPbgª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ªFackpPbgª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ÌNGXg('P'pPbg)ÅÍÈAFreeBSD¤©çackªM³êéj 00:53:45.536721 IP iscsi.iscsi-target > bsd.60821: . ack 131288845 win 65520 iiscsi¤©ç131288845ÌackªÄ³êéB±Ì_Å30bt[Y) i30bãAFreeBSD¤©çNGXgÄ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ÌLv`i»ÌQj 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ªFf[^MpPbgª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ªFackpPbgª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 pPbgª ¹¸30bt[Yj i30bãAFreeBSD¤©çNGXgÄ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