logo
 
WebChain/2 Previous Ramdom Jump WebChain/2 Home Next
 メインメニュー
 サイト内検索

検索オプション
 ログイン
ユーザID または e-mail:

パスワード:

IDとパスワードを記憶

パスワード紛失

新規登録
 IRC(チャット)
#OS/2:*.jp
楽しみ方はこの辺参照.
フォーラム一覧   -   トピック一覧
   一般
     GbE and Jumbo packet etc...
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
chagrin
投稿日時: 06/01/01 23:42
Not too shy to talk
登録日: 03/01/27
居住地: yokohama, japan
投稿: 39
GbE and Jumbo packet etc...
Giga bit Ethernet (1000BASE-T) の MAC (Media Access Control) chip は,転送速度が 100BASE-TX の 10 倍になっただけではなく,新しい,楽しい機能を持っているものが多い.具体的な機能を挙げると,Jumbo packet,Interrupt Holdoff, IP/UDP/TCP checksum offload などがある.

Jumbo packet というのは,従来の 1518bytes(Destination address から frame check sequenceまで)よりも大きなフレームである.これを用いると,一度により多くの情報を送ることが出来るので,ドライバの動作や Inter-frame gap によるオーバーヘッドを減らすことが期待される.

Interrupt Holdoff というのは,割り込みの発生を少なくするために,複数の要求を一回にまとめてしまう仕組みである.100BASE-TX の時と同じ条件で割り込みを発生させると,GbE では単純計算で 10 倍の割り込みが発生してしまうため,割り込み処理によるオーバーヘッドが無視できない程大きくなってしまう.実際に割り込み要求を出すまで,一定時間遅延させて複数の要求を溜め込んだり,要求が一定数を越えるまで遅延させたりする.

IP/UDP/TCP checksum offload は,MAC chip で checksum を計算する機能である.
送信時には,自動的に正しい checksum を設定する.受信時には,自動的に checksum が正しいのか検査する.(OS/2 では,送信時の機能は役立たない.)
chagrin
投稿日時: 06/01/01 23:48
Not too shy to talk
登録日: 03/01/27
居住地: yokohama, japan
投稿: 39
Use Jumbo packet on OS/2
OS/2 Warp で Jumbo packet を使ってみる.

まず,MAC driver が Jumbo packet に対応している必要がある.んですが,gomi driver 群しか対応してないんじゃないかなぁ... TC9021, DP83820, VT6122 のドライバが対応している.VT6122 については,テストが不充分.RTL8196 は 4096bytes より小さければ動くかも(やる気無し).

次に,MAC driver の設定を行う.
MAXFRAME = 9014 などと指定することで,Jumbo packet の送受信を許可する.
指定する数値は MTU +14.+14 は イーサネットのヘッダの大きさ(Destination address, Source address, Type/Length)であり,FCS(CRC) は含まない.
これだけですが,Early transmit threshold が十分大きいか確認するべき.

最後に,プロトコルの設定を行う.
・TCP/IP では \mptn\bin\setup.cmd にて,mtu を変更する.
・TCPBEUI では(たぶん) \mptn\bin\mptconfg.ini にて,mtu を変更する.
・NETBEUI では(たぶん) MAC driver の情報を見て自動設定される.

以上にて Jumbo packet が利用可能になる.
chagrin
投稿日時: 06/01/02 00:16
Not too shy to talk
登録日: 03/01/27
居住地: yokohama, japan
投稿: 39
netio -n with/without jumbo packet, interrupt holdoff
netio -n で jumbo packet と interrupt holdoff の効果を見てみた.

使用機器
Server side: Tamarak TC9020, AMD K6-2+ 200MHz, MCP4.51
Clident side: NSC DP83821, Cyrix MII 250MHz, MCP4.51

設定
[dp820a_nif]
DriverName = DP820A$
SLOT = 0
TXQUEUE = 79
RXQUEUE = 79
TXEARLY = 8064
TXFLTH = 96
TXMXDMA = 64
RXEARLY = 248
RXMXDMA = 64
MAXFRAME = 9014 or 1514
SFLOWON = 4
SFLOWOFF = 8
DFLOWON = 4
DFLOWOFF = 8
IHCTL = "FI"
IHTIME = 2 or 0
RXAEP = "NO"
RXARP = "NO"
RXAIRL = "YES"
IRQ15OVR = "YES"


[TC902X_nif]
DriverName = TC902X$
SLOT = 0
TXQUEUE = 80
RXQUEUE = 80
MAXFRAME = 9014 or 1514
TXINTDELAY = 384 or 1024
RXINTDELAY = 1600 or 0
RXINTCOUNT = 6 or 1
TXEARLY = 8128
RXEARLY = 256
FLOWON = 24576
FLOWOFF = 8192
TXCOMPINT = "NO" or "YES"
AIPCF = "NO"
ATCPCF = "YES"
AUDPCF = "NO"

結果
--- interrupt holdoff enable, mtu 9000 ---
NetBIOS connection established.
Packet size 1k bytes: 1792 KByte/s Tx, 2029 KByte/s Rx.
Packet size 2k bytes: 3259 KByte/s Tx, 2901 KByte/s Rx.
Packet size 4k bytes: 5542 KByte/s Tx, 3522 KByte/s Rx.
Packet size 8k bytes: 8575 KByte/s Tx, 8597 KByte/s Rx.
Packet size 16k bytes: 11906 KByte/s Tx, 13585 KByte/s Rx.
Packet size 32k bytes: 15829 KByte/s Tx, 17431 KByte/s Rx.

--- interrupt holdoff disable, mtu 9000 ---
NetBIOS connection established.
Packet size 1k bytes: 1627 KByte/s Tx, 2100 KByte/s Rx.
Packet size 2k bytes: 3211 KByte/s Tx, 3313 KByte/s Rx.
Packet size 4k bytes: 5499 KByte/s Tx, 6513 KByte/s Rx.
Packet size 8k bytes: 8467 KByte/s Tx, 3787 KByte/s Rx.
Packet size 16k bytes: 11753 KByte/s Tx, 8558 KByte/s Rx.
Packet size 32k bytes: 15349 KByte/s Tx, 16967 KByte/s Rx.

--- interrupt holdoff enable, mtu 1500
NetBIOS connection established.
Packet size 1k bytes: 1345 KByte/s Tx, 1887 KByte/s Rx.
Packet size 2k bytes: 2824 KByte/s Tx, 3388 KByte/s Rx.
Packet size 4k bytes: 4174 KByte/s Tx, 5632 KByte/s Rx.
Packet size 8k bytes: 7508 KByte/s Tx, 8859 KByte/s Rx.
Packet size 16k bytes: 10507 KByte/s Tx, 12514 KByte/s Rx.
Packet size 32k bytes: 13190 KByte/s Tx, 15316 KByte/s Rx.

--- interrupt holdoff disable, mtu 1500
NetBIOS connection established.
Packet size 1k bytes: 1583 KByte/s Tx, 1899 KByte/s Rx.
Packet size 2k bytes: 2967 KByte/s Tx, 3339 KByte/s Rx.
Packet size 4k bytes: 4909 KByte/s Tx, 5502 KByte/s Rx.
Packet size 8k bytes: 7613 KByte/s Tx, 8347 KByte/s Rx.
Packet size 16k bytes: 10471 KByte/s Tx, 11315 KByte/s Rx.
Packet size 32k bytes: 12987 KByte/s Tx, 13795 KByte/s Rx.


考察
ちょっとだけですが,Jumbo packet や Interrupt Hold off は効果があるようです.
割り込み遅延して速くなるなんて,何か間違っている気がしないでもありませんが(笑)

netio -n って,Packet size によって,何故にここまで速度が変わるのだろう.
GbE で netbios が遅いという話は,jumbo packet なんかより,sizeworkbuf や sizereqbuf が重要なのかもしれないね.
densuke
投稿日時: 06/03/23 20:25
Not too shy to talk
登録日: 04/01/19
居住地: 故某大和研究所の隣、相模原
投稿: 22
Re: netio -n with/without jumbo packet, interrupt holdoff
超亀レスですみません。

| netio -n って,Packet size によって,何故にここまで
| 速度が変わるのだろう.
| GbE で netbios が遅いという話は,jumbo packet なんかより,
| sizeworkbuf や sizereqbuf が重要なのかもしれないね.

Ethernetの通信は単純なパケットの交換の他にも物理的な回線
の専有をだれが持つかといった具合に「調停の時間」も必要と
されます。

この時間規定が、実はばかにならなくて、GbEであろうが相手と
しては10Bを意識しなければならない。(混在を意図する)
だからデータが回線を流れるのはできるだけ一発で完了させる
のが速いのは当然のなりゆきなのではないでしょうか。

そんな訳で、10/100Bでもパケットサイズを細工することで
性能が格段に上がるというレポートを某所で読んだ記憶が
あります。不確かではありますが、Sumbaのテクニカル情報に
あったと思います。今共有ファイルで遅いとお嘆きの方は
一度来訪してみては如何でしょうか。

# ここでは 1500 オクテットまでのパケットを
どのようにMTU定義すると実行速度が上がるか
といった具合に情報公開していたと記憶しています。
間違っていたらごめんなさい。

| 割り込み遅延して速くなるなんて,何か間違っている気が
| しないでもありませんが(笑)

間違っていないと思います。

割り込みが遅延すると言っても、この場合の遅延は通信データ
が相対的にパケットのどの位置に有るかの問題ですから、
実時間的な感覚とは、別の次元で考察する必要があります。

上記のようにパケットの交換には実時間要素として、回線の
利用許可(アービトレーション)と、その上で行なわれる
論理通信情報の遣取りでOKが出てはじめて通信が成立します。
考察結果で言われているのは、このうちパケットサイズに
しか着目していないので不思議に思われるだけで、もっと視野
を拡げれば納得されると思われる内容ではないでしょうか。

PS:
でも丁度良いパケットサイズってのは、アプリの要求サイズ
にも影響を受けるので、なかなか難しいものです。
chagrin
投稿日時: 06/03/24 18:03
Not too shy to talk
登録日: 03/01/27
居住地: yokohama, japan
投稿: 39
Re: netio -n with/without jumbo packet, interrupt holdoff
パケットって誤解を招く用語ですよね.
原則として,(ethernet の)フレーム,(netbios の)パケットと
使い分けようとしていますが,jumbo packet という用語は
very large sized ethernet frame を意味しています.

| Ethernetの通信は単純なパケットの交換の他にも物理的な回線
| の専有をだれが持つかといった具合に「調停の時間」も必要と

inter frame gap の事ですね.日本語では何というのだろう.枠間隔?
96us より早く次の転送しちゃダメとか,ってやつ.
占有権を調停する者がいないのが,イーサネットの売りですな.


| この時間規定が、実はばかにならなくて、GbEであろうが相手と
| しては10Bを意識しなければならない。(混在を意図する)

ばかにならない,のはそうですが,GbE では 10BASE の 1/100 です.
どのレベルでの話かによって変わってきますが,混在は出来ません.


| 考察結果で言われているのは、このうちパケットサイズに
| しか着目していないので不思議に思われるだけで、もっと視野
| を拡げれば納得されると思われる内容ではないでしょうか。

システム全般での性能は,割り込みを減らすことで向上すると
期待できますが,パケットをただ垂れ流すベンチマークの結果が
良くなるかと言われると疑問です.

netio の (netbios)パケットサイズ,MTU,Interrupt holdoff の
三次元の要素があって,どれが最も結果に影響するかと言えば,
netio の プロトコル上の論理パケットサイズなのです.
netio の測り方が妥当なものならば,netbios の仕組みでは,
物理層の転送単位より,プロトコル内部の論理単位が速度に
重要な影響を与えている可能性が高いことになります.
orca
投稿日時: 06/03/24 21:55
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: netio -n with/without jumbo packet, interrupt holdoff
> Interrupt Hold off は効果があるようです.
> 割り込み遅延して速くなるなんて,何か間違っている気がしないでもありませんが(笑)

シリアル通信のチップにもそんなのがあるですね。
なので, σ(^^) にはごく普通のことに受け取れたです。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Powered by IBM OS/2 Warp, Apache, PHP, MySQL and XOOPS Cube