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


12

バックグラウンド

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

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

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

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

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

ご質問

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

VMwareホストのメモリ使用量以外に、影響を受けるVMでこれらを最大値に設定することに欠点があるかどうかを判断しようとしています。たとえば、ゲストのプールメモリが枯渇するリスクが増加している場合、小規模から始めたいと考えています。

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


物理NICのTCPオフロードエンジンが正常に動作せず、VMが奇妙な動作を示していたとき、私は本当に不安定なものを見てきました。
SpacemanSpiff

@SpacemanSpiffはチェックする価値がありますが、動作を示すのは150以上のVMのうち16のみです。これらの16個は12ノードクラスター全体に分散しており、それらはすべてKB記事に記載されている症状を引き起こすものと思われるトラフィックの高バーストを時折受け取ります。これらの一部はWindowsクラスターであるため、DRSと共に移動しません。そうでない場合、vMotionがオフになる前に、特定のホスト上で影響を受けるすべてのゲストがパケットのドロップを示したかどうかを調べます。再度確認し、相関関係を見つけることができるかどうかを確認します。ありがとう。
briantist

おそらく、これはどのハードウェアですか?
SpacemanSpiff

@SpacemanSpiff IBMサーバー、いくつかの異なるモデルとリビジョン、またどのNICかわからないので、明日詳細を確認できます。
-briantist

回答:


5

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

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

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

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

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

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

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

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

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

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

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

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


1
素晴らしい最初の回答であるロジャーに感謝します。私はしばらくこの会社にいませんでしたので、この問題は私のレーダーから外れていますが、完全にするために、それらを最大に設定することにメモリ使用上の懸念がありますか?KBの記事では、そのように大量のメモリを使用できるように聞こえますが、その量はかなり少ないようです。試行錯誤以外のこれらの値のサイズを決定する方法も不明であるため、私はこれを尋ねます。
-briantist

1
再:メモリ使用量、私が注意する2つのこと:1)ジャンボフレームを使用していない場合、私は同意し、最大設定でのメモリ量はまだかなり小さいです。ジャンボフレームを使用している場合、バッファサイズは約9kbであるため、より多くのメモリを使用しています。2)非ページプールで使用可能なメモリの量が、ホスト上のメモリの総量よりも少ない。私は、ここに専門家ではないですが、このリンクは、利用可能なメモリの計算方法については、かなり包括的な荒廃がありますblogs.technet.microsoft.com/markrussinovich/2009/03/10/...
ロジャー・ヤコブソン

よかった。ありがとう。この答えが将来誰かに役立つことを願っています(もしこれに再び
出くわす

0

ポイント1-2-3の返信はありませんが、仮想エンジニアにVmwareホスト設定について確認できます。彼が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


返信いただきありがとうございますが、私はVCPです。これは、実際にはホスト構成に関するものではありません。私がリンクしたMicrosoftの記事では、問題のパフォーマンスカウンターが0を超えてはならず、複数のVM上にあると説明しています。VMware KBの記事で説明されている以上に、vNIC設定について理解しようとしています。
-briantist

-1

私は完全に検索して正しいページを指し示す立場にありません。そのため、詳細を自分で調べるようにお願いしています...(ごめんなさい)

フェールオーバークラスターには、4つの設定を設定できます。バッファやページングまたは非ページングには影響しません...フェールオーバークラスターがノードを「削除」したと判断する方法を変更します。これらの設定は次のとおりです。

SameSubnetDelay SameSubnetThreshold CrossSubnetDelay CrossSubnetThreshold

それらはあなたの問題を解決しないかもしれませんが、これらを微調整することで、現時点でトラブルから抜け出すことができます...

月曜日に戻ったときに、さらに質問がある場合は、この投稿に戻って確認します

HTH、エドウィン。


PS:実行しているWindowsのバージョンを教えてください。
エドウィン・ファンミールロ

これはWindows 2008でした。VMwareから(これらすべての月の後に)返信がありましたが、私はこれが起こったときに会社にいたことすらありません。答えは簡単ではなく、私は彼らの答えを読んで何かを投稿するつもりでしたが、時間がありませんでした。クラスターに関するヒントを感謝しますが、現時点では試用できません。
-briantist

私は元の投稿が2ヶ月前であることに気づいていますが、アンドロイドアプリではあまり明確ではありませんでした...次回は詳しく見ていきます...一方、私の答えは検索する他のユーザーにとっても有効です同様の経験のために。
エドウィンヴァンミールロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.