[BitVisor-devel:117] Re: lwip2.0.3によって発生したスループットの低下

Hideki EIRAKU hdk @ igel.co.jp
2018年 12月 14日 (金) 15:43:17 JST


イーゲル 榮樂です。こんにちは。

From: 高直我 <naoga.taka @ gmail.com>
Subject: [BitVisor-devel:116] lwip2.0.3によって発生したスループットの低下
Date: Thu, 13 Dec 2018 13:55:21 +0900

> 開発しているシステムを動作させた状態で、Windows7上でCrystalDiskMarkを用いてストレージI/Oのスループットを計測したところ、マージ前のシステムと比較して速度が約1/5に低下してしまう問題が発生いたしました。
> マージ前のBitVisorでは2016年3月頃のlwipをクローンして利用しております。(バージョンは不明です。以前のBitVisorが利用していたlwip1.4.1は使っていません。)
> opt.hのパラメータも以前使用していたものと同じ値にしてもパフォーマンスは改善されませんでした。
> BitVisorのアップデート前後でソースコードの改変は行っていないので、BitVisorやlwipのバージョンを上げたことによって生じている問題だと考えています。もし原因として考えられる点がございましたら、ご指摘頂きたいと思うのですがいかがでしょうか。

lwIP のバージョンアップによる性能低下は今のところ確認できていません。
原因はわからないのですが、BitVisor の lwIP の性能については、パケット
が届いてから BitVisor の受信処理がどれだけ早く行われるかの影響が大きい
ようです。

何らかの要因でうまく割り込みが取れていないと、受信のタイミングが遅くな
ることがあります。例えば、通信相手側のコンピューターから、ping コマン
ドを利用して lwIP に対して ICMP echo request を送信させ、ラウンドトリッ
プタイムを見たときに、やたら不安定な場合 (数 ms から数百 ms 以上の間を
行き来する場合) は、割り込みの問題ではないかと疑います。そのような場合
は非常に大きな性能低下が見られることがあります。

また、BitVisor の config.vmm.no_intr_intercept を 1 にしていると、割り
込みがあっても BitVisor に制御が移らなくなるため、BitVisor の lwIP の
性能が低下することがあります。Intel GbE NIC 用の割り込み周りは
virtio-net 用の実装に一部問題があったものが昨年の 6 月に修正されていま
す。

たまに、VPN モジュールを使用していないにも関わらず、BitVisor とゲスト
オペレーティングシステムに同じ IP アドレスを割り当ててしまう場合があっ
て (両方 DHCP にしてしまうなど)、その場合は突然 TCP/IP が切れるという
ような動作をすることがあります。

以上のような内容は、通信相手側のコンピューターで、パケットキャプチャー
などの方法により、遅くなっている箇所を特定し (ack が常に遅い/たまに遅
い、転送速度が変動している、など)、また、変な通信内容がないか、などを
確認して調べることになるかと思います。

> .driver = {
> .pci = "slot=01:00.0, driver=conceal, and, slot=02:00.0, driver=pro1000,
> net=ippass, tty=1, and, slot=03:00.0, driver=conceal, and, slot=00:17.0,
> driver=ahci",

Intel GbE NIC の準パススルーモードを使用されているようですので、この場
合は virtio-net 関連の修正は関係がなく、おそらく no_intr_intercept も
あまり影響がなく、ゲストオペレーティングシステムが使用している NIC の
デバイスドライバーの受信処理が、NIC のレジスターにアクセスするタイミン
グが重要になります。

原因が見つかりましたら修正パッチを送って頂けると幸いです。

-- 
Hideki EIRAKU <hdk @ igel.co.jp>


BitVisor-devel メーリングリストの案内