<div dir="ltr">榮樂様:<div><br></div><div>お早いご回答ありがとうございます。</div><div>アドバイス頂いたこと含め、調査を進めて参ります。</div><div><br></div><div>原因が特定でき次第、パッチを作りたいと思います。</div><div><br></div><div>豊田高専 高</div></div><br><div class="gmail_quote"><div dir="ltr">2018年12月14日(金) 15:43 Hideki EIRAKU <<a href="mailto:hdk@igel.co.jp">hdk@igel.co.jp</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">イーゲル 榮樂です。こんにちは。<br>
<br>
From: 高直我 <<a href="mailto:naoga.taka@gmail.com" target="_blank">naoga.taka@gmail.com</a>><br>
Subject: [BitVisor-devel:116] lwip2.0.3によって発生したスループットの低下<br>
Date: Thu, 13 Dec 2018 13:55:21 +0900<br>
<br>
> 開発しているシステムを動作させた状態で、Windows7上でCrystalDiskMarkを用いてストレージI/Oのスループットを計測したところ、マージ前のシステムと比較して速度が約1/5に低下してしまう問題が発生いたしました。<br>
> マージ前のBitVisorでは2016年3月頃のlwipをクローンして利用しております。(バージョンは不明です。以前のBitVisorが利用していたlwip1.4.1は使っていません。)<br>
> opt.hのパラメータも以前使用していたものと同じ値にしてもパフォーマンスは改善されませんでした。<br>
> BitVisorのアップデート前後でソースコードの改変は行っていないので、BitVisorやlwipのバージョンを上げたことによって生じている問題だと考えています。もし原因として考えられる点がございましたら、ご指摘頂きたいと思うのですがいかがでしょうか。<br>
<br>
lwIP のバージョンアップによる性能低下は今のところ確認できていません。<br>
原因はわからないのですが、BitVisor の lwIP の性能については、パケット<br>
が届いてから BitVisor の受信処理がどれだけ早く行われるかの影響が大きい<br>
ようです。<br>
<br>
何らかの要因でうまく割り込みが取れていないと、受信のタイミングが遅くな<br>
ることがあります。例えば、通信相手側のコンピューターから、ping コマン<br>
ドを利用して lwIP に対して ICMP echo request を送信させ、ラウンドトリッ<br>
プタイムを見たときに、やたら不安定な場合 (数 ms から数百 ms 以上の間を<br>
行き来する場合) は、割り込みの問題ではないかと疑います。そのような場合<br>
は非常に大きな性能低下が見られることがあります。<br>
<br>
また、BitVisor の config.vmm.no_intr_intercept を 1 にしていると、割り<br>
込みがあっても BitVisor に制御が移らなくなるため、BitVisor の lwIP の<br>
性能が低下することがあります。Intel GbE NIC 用の割り込み周りは<br>
virtio-net 用の実装に一部問題があったものが昨年の 6 月に修正されていま<br>
す。<br>
<br>
たまに、VPN モジュールを使用していないにも関わらず、BitVisor とゲスト<br>
オペレーティングシステムに同じ IP アドレスを割り当ててしまう場合があっ<br>
て (両方 DHCP にしてしまうなど)、その場合は突然 TCP/IP が切れるという<br>
ような動作をすることがあります。<br>
<br>
以上のような内容は、通信相手側のコンピューターで、パケットキャプチャー<br>
などの方法により、遅くなっている箇所を特定し (ack が常に遅い/たまに遅<br>
い、転送速度が変動している、など)、また、変な通信内容がないか、などを<br>
確認して調べることになるかと思います。<br>
<br>
> .driver = {<br>
> .pci = "slot=01:00.0, driver=conceal, and, slot=02:00.0, driver=pro1000,<br>
> net=ippass, tty=1, and, slot=03:00.0, driver=conceal, and, slot=00:17.0,<br>
> driver=ahci",<br>
<br>
Intel GbE NIC の準パススルーモードを使用されているようですので、この場<br>
合は virtio-net 関連の修正は関係がなく、おそらく no_intr_intercept も<br>
あまり影響がなく、ゲストオペレーティングシステムが使用している NIC の<br>
デバイスドライバーの受信処理が、NIC のレジスターにアクセスするタイミン<br>
グが重要になります。<br>
<br>
原因が見つかりましたら修正パッチを送って頂けると幸いです。<br>
<br>
-- <br>
Hideki EIRAKU <<a href="mailto:hdk@igel.co.jp" target="_blank">hdk@igel.co.jp</a>><br>
_______________________________________________<br>
BitVisor-devel mailing list<br>
<a href="mailto:BitVisor-devel@bitvisor.org" target="_blank">BitVisor-devel@bitvisor.org</a><br>
<a href="https://www.bitvisor.org/mailman/listinfo/bitvisor-devel" rel="noreferrer" target="_blank">https://www.bitvisor.org/mailman/listinfo/bitvisor-devel</a><br>
</blockquote></div>