Intelの10Gイーサで遊んでみた

手元にIntel Ethernet Server Adapter X520-DA2×2とSFP+のケーブルが届いたのでちょっと遊んでみた。




構成

FreeBSDマシン
CPU Core i7 X980(物理6コア、論理12コア)
RAM 24GB
Kernel FreeBSD 9.0-current
Linuxマシン
CPU Core 2 Quad Q6600(物理=論理4コア)
RAM 8GB
Kernel 3.0.0-gentoo

ベンチマーク

パラメータ

受信側はiperf -s
送信側はiperf -c [IP] -P [スレッド数]
で、TCP通信時のスループットを計測

カーネルNICの設定はほぼデフォルト(の、はず)

LinuxFreeBSD
Threads Throughput(Gbps)
1 1.19
4 2.34
8 2.68
16 3.30
32 3.82

カーネルからInterrupt storm detectedと大量に出力された。
受信が多い時のポーリングへの移行が効いていないか、Interrupt Coalescingの設定が悪いか、その両方か、という所ではないだろうか。
確かにCPU使用率をみるとInterruptがすごい割合になっている。

FreeBSDLinux
Threads Throughput(Gbps)
1 1.45
4 5.42
8 6.58
16 6.43
32 5.91

FreeBSDの時と異なり8スレッドがピークでそこから性能が落ちるのはコア数が少ないからではないだろうか。
流石にCPUを取られ過ぎているのか、負荷をかけている間、他のGUIアプリの動作が鈍くなる。

考えたこと

数字だけでみればLinuxの方が性能がいいけど、というよりはFreeBSDカーネルの状態が何かおかしい気がする。

追記:
Intelの10Gイーサで遊んでみた 追試 - かーねる・う゛いえむにっき
Intelの10Gイーサで遊んでみた 追試2 - かーねる・う゛いえむにっき