元々 via-velocity は、少し古いバージョンの velocityget ソースを整理したものだった。ただ、現在の双方のバージョンを比べると、via-velocity に含まれていない要素がある。
- EnableMRDPL (Memory-Read-Multiple)オプション
- VIA 的には「Adaptive Interrupt」と呼ばれるもの
(txque_timer/rxque_timer/tx_intsup/rx_intsupオプションとその関連部分)
これは、分岐後にVIAによって追加されたものか、意図的に省かれたのもか、どちらなのかは正直分からない。
EnableMRDPL (Memory-Read-Multiple)オプション
最初の要素は、PCIのバースト転送のモードをなんか指定するものらしいが、ベンチマーク上は効果がなかった。 PCIに詳しくなければいまいち内容が分からないし、デフォルトが無効なので、今回は見送った。
VIA 的には「Adaptive Interrupt」と呼ばれるもの
「適応割り込み」と称しているが、単に割り込みを一定数間引いたり、一定時間遅延を入れるだけのようで、 特に割り込みの頻度に応じて動的に変更はしない。。。なんかなぁ
うんで、機能追加パッチを作ってみた。(velocitygetの処理を流用)
- via-velocity の adaptive interrupt 関連の機能追加パッチ (debian lenny/kernel-2.6.26用) / via-velocity-adaptive-intr.patch
前出の修正パッチの後に当てればいい
# mkdir via-velocity # cp Makefile-via-velocity-only via-velocity/Makefile # cp /usr/src/linux-source-2.6.26/drivers/net/via-velocity.[ch] via-velocity/ # patch -p 3 -d via-velocity < via-velocity-fixed-wol.patch # patch -p 3 -d via-velocity < via-velocity-fixed-int_works.patch # patch -p 3 -d via-velocity < via-velocity-adaptive-intr.patch # cd via-velocity # make install
スループット性能の比較
前回と同じ環境で、velocityget と via-velocityの「Adaptive Interrupt」パッチ有/無の3種類の場合を測定した。
velocityget | via-velocity パッチ無し | via-velocity パッチあり | |||||||
---|---|---|---|---|---|---|---|---|---|
スループット (Mbps) | CPU 利用率 | スループット (Mbps) | CPU 利用率 | スループット (Mbps) | CPU 利用率 | ||||
target | ref1 | target | ref1 | target | ref1 | ||||
target ⇒ ref1 | 655.4841 | 99 % | 11 % | 646.4036 | 99 % | 12 % | 724.7809 | 99 % | 12 % |
target ⇐ ref1 | 741.2755 | 66 % | 4 % | 709.2465 | 80 % | 2 % | 762.3420 | 51 % | 5 % |
velocityget | via-velocity パッチ無し | via-velocity パッチあり | |||||||
---|---|---|---|---|---|---|---|---|---|
スループット (Mbps) | CPU 利用率 | スループット (Mbps) | CPU 利用率 | スループット (Mbps) | CPU 利用率 | ||||
target | ref1 | target | ref1 | target | ref1 | ||||
target ⇒ ref1 | 816.0544 | 32 % | 7 % | 816.1541 | 30 % | 7 % | 814.9007 | 31 % | 7 % |
target ⇐ ref1 | 989.8745 | 48 % | 9 % | 944.4813 | 46 % | 8 % | 989.8323 | 46 % | 9 % |
考察
mtu 1500 のとき、送信性能が10%程度上がった。受信性能はほぼ velocityget と同程度になったが、CPU負荷率は低くなった。mtu 9000 のときは、velocityget と同程度になった。
受信時のCPU負荷率低下は面白い。NAPI化すればより軽くなるのかなぁ。e100?系の適応なんとかの動的アルゴリズムを流用すればもっと良くなるのかなぁ。もっと送信性能を上げるにはどうすれば良いのだろう。。。
スループットのベンチマーク上の結果だけなので、レイテンシとかはどうなんだろう。。。
本来 ethtool へのインタフェース経由で設定するものを、モジュールパラメータに載せて、固定値になっているのも気になると言えば気になる。
ちまちまパッチを切るのは面倒だから、どっかにレポジトリ借りて、最新版のバニラソースに作業するのがいいのかなぁ。
ふぅむ。
近年、VIA の NIC のシェアはかなり落ちている。大抵の onboard NIC は RealTek の奴だったりする。また、Windows 64bit系の4G問題とかも敬遠される原因になっている。
廃れつつ、傾きつつ、そんなものの為に作業する奴がいないんだろうなぁ。
VIA EPIA は本当に不憫な奴だ。
今年分の作業は、この辺かなぁ、、、では
0 件のコメント:
コメントを投稿