web-dev-qa-db-ja.com

VMXNET3受信バッファーのサイズとメモリ使用量

バックグラウンド

Windowsフェールオーバークラスターが中断したというインシデントがありました。事後分析により、 この記事で説明されているようにノードが「削除された」 であることがわかりました。

このクラスタをVMware環境に完全に移行したのは最近のことですが、上記のイベントが停止の原因であった可能性があります。

関連するVMware KB記事 これについては、Small Rx BuffersおよびRx Ring #1設定の増加について説明していますが、これらを過度に増加すると、ホストのメモリオーバーヘッドが大幅に増加する可能性があることに注意してください。

〜150のWindows VMのNetwork Interface\Packets Received Discardedパフォーマンスカウンターを監査した後、16のゲストの22のvNICでパケットが破棄されました。

追加のメモリ使用量でホストに負荷をかけることは心配していませんが、これらの設定でメモリがどのように使用され、どこからメモリが取得されるかを理解したいほどの少量。

ご質問

  1. バッファ数とリングサイズの関係は?
  2. これらの設定の特定の値に使用されるメモリ量をどのように計算しますか?
  3. これらの設定は、ゲストOS内のNIC=自体にあるため、ドライバー設定であると想定しています。これにより、使用されているRAMがページングされているか、非ページプール。
    1. これは正しいです?
    2. もしそうなら、私はそれについて心配する必要がありますか?
  4. ここで考慮していない懸念事項はありますか?

私たちは、VMwareホストのメモリ使用量以外に、影響を受けるVMでこれらを最大値に設定することに欠点があるかどうかを判断しようとしています。たとえば、ゲストでプールメモリが使い果たされるリスクが高まっている場合は、小さい方から始める傾向があります。

これらの質問の一部(おそらくすべて)は、VMwareまたは仮想化に固有のものではない可能性があります。

12
briantist

バッファ数とリングサイズの関係は?

それらは関連していますが、独立しています。 rx "リング"は、着信ネットワークパケットをホスト(ハイパーバイザー)からゲスト(Windows VM)に渡すためのキューとして使用されるメモリ内の一連のバッファーを指します。メモリはネットワークドライバによってゲストで予約され、ホストメモリにマップされます。

新しいネットワークパケットがホストに到着すると、リング内で次に利用可能なバッファに配置されます。次に、ホストはゲストでIRQをトリガーします。ゲストドライバーはIRQに応答して、リングからパケットを取り出し、ゲストOSのネットワークスタックにディスパッチします。これにより、ゲストOSは、それを受信しようとするゲストアプリケーションに送信します。パケットが十分に遅く入っており、ゲストドライバーが十分に速く処理していると仮定すると、リングには常に空きスロットがあるはずです。ただし、パケットの受信速度が速すぎる場合、またはゲストによるパケットの処理速度が遅すぎる場合、リングがいっぱいになり、パケットがドロップされる可能性があります(この状況をご覧ください)。

リングサイズを大きくすると、この問題を軽減できます。増やすと、リングで同時に使用できるスロットが増えます。これは、リングのスロットを埋めるために使用できる使用可能なバッファーの合計量である2番目の設定「Small Rx Buffers」に影響します。少なくともリング内のスロットと同じ数のバッファが必要です。通常はもっと欲しいです。ゲストがリングからバッファーを取り出してゲストネットワークスタックに渡す場合、必ずしもバッファーがドライバーにすぐに返されるとは限りません。その場合は、リングを埋めるために予備のバッファーを用意することで、パケットをドロップせずに長くすることができます。

Rx Ring#1/Small Rx Buffersは、非ジャンボフレームに使用されます。デフォルトのNIC構成がある場合、それが使用される唯一のリングです。

これらの設定の特定の値に使用されるメモリ量をどのように計算しますか?

非ジャンボフレームについて話していると仮定すると、各バッファは、ネットワークパケット全体を格納するのに十分な大きさ、つまり約1.5kbである必要があります。したがって、8192個のバッファを使用できる場合、12MBを使用します。より大きなリングもより多くのメモリを使用しますが、記述子は小さい(バイト)ので、それは本当にあなたが心配しなければならないバッファです。

これらの設定はゲストOS内のNIC=自体にあるため、ドライバ設定であると想定します。これにより、使用されているRAMがページングされているか、非ページプール。

はい、それは非ページプールです。リングバッファーがページングされた場合、バッファーがページインされている間にパケットがドロップされる可能性があります。

ここで考慮していない懸念事項はありますか?

これがあなたの状況に関連しているかどうかはわかりませんが、リングが大きくなると、ネットワークrxパスのキャッシュフットプリントが増えることに注意してください。マイクロベンチマークでは、より大きなリングが通常パフォーマンスを低下させることがわかります。とはいえ、実際のアプリケーションでは、パケットがドロップされた場合、通常、スピードバーストの小さなパフォーマンスの向上よりも大きな問題になります。

出典:私はVMwareで働いていました。

5
Roger Jacobson

ポイント1-2-3に対する返信はありませんが、仮想ホストのVmware Host configについて確認できます。彼がVCPである場合、彼は内容を理解します:)

Windowsの問題はゲストではなくホスト上にある可能性があるため、実際にはホストを確認する必要があります。

問題、directpath io、rss、vcpu、電源管理スキームを説明できる多くのハードウェア機能があります...

私はあなたにあなたの仮想チーム、またはあなたを助けるいくつかのリンクを与えることができます:)

このリンクはホストのチューニングに関するものです http://buildvirtual.net/tuning-esxi-Host-networking-configuration/

そして、この太いpdf:

http://www.vmware.com/pdf/Perf_Best_Practices_vSphere5.0.pdf

そしてこれはrssについてです:

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2008925

0
YuKYuK