川口です

手元の NIC 群をちょっとテストしてみました.
(解決策ではないです...)

◆host1: bge0, em0       (Intel Xeon 5130(2GHz); chipset: intel 5000X)

bge0: <Broadcom BCM5752 A1, ASIC rev. 0x6001> mem 0xfba00000-0xfba0ffff irq 17 
at device 0.0 on pci31
bge0: firmware handshake timed out
miibus0: <MII bus> on bge0
brgphy0: <BCM5752 10/100/1000baseTX PHY> on miibus0
brgphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseTX, 
1000baseTX-FDX, auto
bge0: Ethernet address: 00:17:08:xx:xx:xx
(微妙にイヤなメッセージがありますね...)

em0: <Intel(R) PRO/1000 Network Connection Version - 6.2.9> port 0x1100-0x113f 
mem 0xfb440000-0xfb45ffff,0xfb400000-0xfb43ffff irq 56 at device 10.0 on pci17
em0: Ethernet address: 00:04:23:xx:xx:xx


◆host2: bce0            (Intel Xeon 5150(2.6GHz); chipset: intel 5000P)

bce0: <Broadcom NetXtreme II BCM5708 1000Base-T (B1), v0.9.6> mem 
0xf8000000-0xf9ffffff irq 16 at device 0.0 on pci3
bce0: ASIC ID 0x57081010; Revision (B1); PCI-X 64-bit 133MHz
miibus0: <MII bus> on bce0
brgphy0: <BCM5708C 10/100/1000baseTX PHY> on miibus0
brgphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseTX, 
1000baseTX-FDX, auto
bce0: Ethernet address: 00:18:71:73:c5:5a

どちらも FreeBSD/i386 6-stable の標準(SMP)kernel です.
(host1 は10月頃, host2 は 11月頃のもの)


ports/net/rude を利用して 1500Byte UDP の転送性能をみています.

receiver% crude -s 30

sender% cat rude.cfg
START NOW
1000 0030 ON 3002 10.1.1.1:10001 CONSTANT 70000 1500    # ex. 1500Byte @ 
70000pps
11000 0030 OFF                                          # 10秒間で終了
sender% rude -s rude.cfg

で rude 終了後に crude を ^C して統計情報をみるという感じです.

組合わせは以下の通りで,hub なしにストレートケーブル直結です.
pattern1:       [EMAIL PROTECTED] => [EMAIL PROTECTED]
pattern2:       [EMAIL PROTECTED] <= [EMAIL PROTECTED]
pattern3:       [EMAIL PROTECTED] => [EMAIL PROTECTED]
pattern4:       [EMAIL PROTECTED] <= [EMAIL PROTECTED]

結果は pattern1,3,4 は 900Mbps(76kpps) を越えるくらいは行きますが,
pattern2 だけ 500Mbps(〜44kpps) 程度で頭打ちのようです.

ということですくなくとも
「PCI-Express 接続の [EMAIL PROTECTED]  の送信側の性能」が少々怪しいようです.
(自分で以前テストしたのは,緒事情により受信側性能だけだったため,
bge系に難ありとは全然気が付かなかったのですね)

pattern1 では 70000pps と設定して 
10s で 713952 received, 2 out-of-seq, 334 lost(1.07e8 Byte/s) でしたが
pattern2 では 45000pps の設定で既に 44000 received, 0 out-of-seq, 14546 lost です.
(pattern3,4 は pattern1 と概ねにた数字です; 
 いずれも 7万より増やしても 75000pps辺りから頭打ちになります)

ちなみに pattern2 でも payload size を 1500B => 150B にすると
pps は増えますので,割り込みとかの packet 処理性能の問題ではないようです.
(ま,"送信" だから割り込みはないですよね)

ちなみに 150Byte/packet だと loss率とかの特性が違っているようですが,
この領域では既に rude 自体があまりまともに動いていない可能性も
ある気がするのであまりテストしていません.

一番負担の軽い 1500Byte/packet でこの程度だと
もっと問題視されていても良さそうな気がしますが,どうなんでしょう...


In Sun, Dec 17, 2006 at 03:05:32PM +0900,
Kazumaro Aoki <[EMAIL PROTECTED]> wrote:
> > src% cat rude.cfg
> > START NOW
> > 1000 0030 ON 3002 10.1.1.1:10001 CONSTANT 500 1500  # ex. 1500Byte @ 500pps
> > 11000 0030 OFF                                              # 10秒間で終了
> > EOF
> > src% rude -s rude.cfg
> 
> EOFを入れると「rude -s rude.cfg」がすぐ終ってしまったので、削りました。
> 10.1.1.1は、「crude -s 30」を立ち上げるマシンと解釈して実験しました。

失礼しました.EOF は当方の書き間違いです.

-- 
       ∧∧
Zzz.. (- - )⌒⌒⊇〜           川口 銀河
      ##############   [EMAIL PROTECTED]

メールによる返信