<div dir="ltr"><div dir="ltr"><div>豊田工業高等専門学校情報科学専攻2年の高直我と申します。</div><div>現在、BitVisorを用いてシステムの開発を行っております。</div><div>BitVisorが利用しているlwipの転送についてひとつお聞きします。</div><div><br></div><div>現在、ストレージをフックし、ストレージI/Oに関するデータをlwipによって転送するシステムの実装を行っております。</div><div>BitVisorがlwip2.0.3を利用するようになったと伺い、最新版のBitVisor(コミットハッシュ:f8d6f8f)をクローンし既存の開発システムをマージしてテストをしました。</div><div><br></div><div>開発しているシステムを動作させた状態で、Windows7上でCrystalDiskMarkを用いてストレージI/Oのスループットを計測したところ、マージ前のシステムと比較して速度が約1/5に低下してしまう問題が発生いたしました。</div><div>マージ前のBitVisorでは2016年3月頃のlwipをクローンして利用しております。(バージョンは不明です。以前のBitVisorが利用していたlwip1.4.1は使っていません。)</div><div>opt.hのパラメータも以前使用していたものと同じ値にしてもパフォーマンスは改善されませんでした。</div><div>BitVisorのアップデート前後でソースコードの改変は行っていないので、BitVisorやlwipのバージョンを上げたことによって生じている問題だと考えています。もし原因として考えられる点がございましたら、ご指摘頂きたいと思うのですがいかがでしょうか。</div><div><br></div><div>参考までにdefconfigとopt.hの変更したパラメータ部分のdiffを添付させていただきます。お忙しいところ恐れ入りますが、ご回答いただけると幸いです。</div><div>よろしくお願いします。</div><div><br></div><div><br></div><div><br></div><div>・defconfig</div><div>struct config_data config = {</div><div><span style="white-space:pre">      </span>.vpn = {</div><div><span style="white-space:pre">              </span>// 省略</div><div><span style="white-space:pre">     </span>},</div><div><span style="white-space:pre">    </span>.storage = {</div><div><span style="white-space:pre">          </span>// 省略 </div><div><span style="white-space:pre">   </span>},</div><div><span style="white-space:pre">    </span>.vmm = {</div><div><span style="white-space:pre">              </span>// 省略</div><div><span style="white-space:pre">             </span>.driver = {</div><div><span style="white-space:pre">                   </span>.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",</div><div><span style="white-space:pre">             </span>},</div><div>     // 省略</div><div>};</div><div><br></div><div>・opt.hのdiff結果</div><div>(1つ目の引数が変更後のopt.h、2つ目の引数がオリジナルのopt.hです。)</div><div><br></div><div>diff bitvisor/ip/lwip-2.0.3/src/include/lwip/opt.h ../bitvisor_latest/ip/lwip-2.0.3/src/include/lwip/opt.h </div><div>256,257c256</div><div>< //#define MEM_SIZE                        1600</div><div>< #define MEM_SIZE                         1024 * 1024 * 512</div><div>---</div><div>> #define MEM_SIZE                        1600</div><div>391,392c390</div><div>< //#define MEMP_NUM_TCP_SEG                16</div><div>< #define MEMP_NUM_TCP_SEG                65535</div><div>---</div><div>> #define MEMP_NUM_TCP_SEG                16</div><div>1185,1186c1183</div><div>< //#define TCP_MSS                         536</div><div>< #define TCP_MSS                         1460</div><div>---</div><div>> #define TCP_MSS                         536</div><div>1207,1208c1204</div><div>< //#define TCP_SND_BUF                     (2 * TCP_MSS)</div><div>< #define TCP_SND_BUF                    65535</div><div>---</div><div>> #define TCP_SND_BUF                     (2 * TCP_MSS)</div><div>1216,1217c1212</div><div>< //#define TCP_SND_QUEUELEN                ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS))</div><div>< #define TCP_SND_QUEUELEN                 65535</div><div>---</div><div>> #define TCP_SND_QUEUELEN                ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS))</div></div></div>