net6501-70 ネットワークベンチマーク harvest編
Posted on 2012/10/14(Sun) 16:53 in technical
FreeBSDのネットワークパフォーマンスチューニングに関するwikiページがあるのですよ。
http://wiki.freebsd.org/NetworkPerformanceTuning
で、OS tuningの項目には、以下のように書いてある。
Skip feeding /dev/random from network. kern.random.sys.harvest.ethernet=0 kern.random.sys.harvest.point_to_point=0 kern.random.sys.harvest.interrupt=0
そんなに変わるかなぁ、と半信半疑なので、簡単に測定してみた。
※見たら分かると思うけど信憑性超低いですぞな。
前提
物理構成
Node1 ---(SW)--- net6501 --- Node2
環境
OS : FreeBSD 9.0R pf : disable fastforward: disable hw.intr_storm_threshold: 40000
/boot/loader.conf
console=comconsole autoboot_delay="3" hw.em.txd=4096 hw.em.rxd=4096 kern.ipc.nmbclusters=65535
以下の値が0の時がoff、1の時がonということで。
kern.random.sys.harvest.ethernet kern.random.sys.harvest.point_to_point kern.random.sys.harvest.interrupt
UDP/IP interrupt storm on
スループットが下がる前の値で比較すると、640Mbpsと620Mbps位かなぁ。UDPで見ると一応意味がありそう。
一応連続試験なのでこの670MBps出てるヤツも説明したいところだけど放置(ぇー
ここでは、hw.intr_storm_threshold=40000として設定しているものの、スループットがガタッと下がっているタイミングで
"interrupt storm detected on "irq260:"; throttling interrupt source"
が多発していることが確認できていて、それのせいかなぁ...とか漠然と考えてて役に立たない。
大体こういう感じになってる。(これは別にstormが起きてる時の値ではないけれど)
# vmstat -i interrupt total rate irq4: uart0 8754 0 cpu0:timer 15828222 207 irq256: ahci0 49996 0 irq260: em1:rx 0 80635053 1057 irq261: em1:tx 0 22777456 298 irq262: em1:link 53415734 700 irq263: em2:rx 0 30604895 401 irq264: em2:tx 0 97307041 1276 irq265: em2:link 6 0 irq266: em3:rx 0 66534 0 cpu1:timer 15266797 200 Total 315960488 4144
UDP/IP interrupt storm off
hw.intr_storm_threshold=0にしたバージョン。
限界まで割り込みさせるので、スループットがガタッと下がることはなくて多少見やすくなったんじゃないかなぁ、と。
先のグラフで、スループットが下がる前のと比べると大体同じレートで推移してるように見える。
つまりはこの程度の効果がありそうだ、という話(でもさっきの670MBps近く出てるラインは無視してる)
UDP/IPv6 interrupt storm off
hw.intr_storm_threshold=0にしたバージョン。
これがまた面倒で、一部スループットが変に高いというか。
300[sec]の間、特に大きな変動もなく推移してるのでちょっと意味がわかりませんね、って感じなのだけど。
pfはdisableなのでステート数はあんまり。
キャッシュヒット率とかは見てないからなぁ...。再現出来たら追うべきか。
暫定結論
kern.random.sys.harvest.ethernet=0 kern.random.sys.harvest.point_to_point=0 kern.random.sys.harvest.interrupt=0
は、若干ながら意味がある(が、5%未満とかそういうレベルなので、ある意味誤差レベル)。
むしろ、interrupt storm detectedを防ぐように設定した方が、転送性能だけを見れば余程意味があるのではないか、というところ。