ESXi 8.0 の Windows 仮想マシンで VMXNET3 の "out of buffers" を起因としたパケットドロップが発生する
search cancel

ESXi 8.0 の Windows 仮想マシンで VMXNET3 の "out of buffers" を起因としたパケットドロップが発生する

book

Article ID: 448580

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

免責事項: これは英文の記事「VMXNET3 "out of buffers" packet drops on Windows VMs in ESXi 8.0」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

  • VMXNET3 インターフェイスでパケットドロップが発生します。
  • ゲスト OS 上で、イベントログに関連するサービスが高いメモリ使用率を示します。
  • アプリケーションのパフォーマンスが低下します。 (例: SQL 監査ログ処理)
  • ESXi の vsish 統計で "running out of buffers" カウンターの増加が報告されます。 (例: running out of buffers: 274190)

Environment

VMware ESXi 8.0

Cause

この問題は、ESXi ホストの CPU 競合によって引き起こされます。VMXNET3 のリングバッファは受信パケットの一時キューとして機能しますが、パケットの流入速度に対して仮想マシンに割り当てられた CPU リソースが不足すると、バッファが枯渇します。リングバッファの上限に達すると、後続のパケットがドロップされ、"running out of buffers" エラーが発生します。

Resolution

この問題を解決するには、リソース割り当てとバッファ調整により、VMXNET3 受信パスの処理能力を安定させる必要があります。

  1. CPU 予約の有効化: 影響を受ける仮想マシンに CPU 予約を割り当てます。CPU 予約を割り当てることで、ホスト全体で競合が発生している期間でも、ネットワークキューを処理するための CPU サイクルを確実に確保します。
    • vSphere Client で仮想マシンを右クリックし、[設定の編集] を選択します。
    • [CPU] を展開し、ワークロード要件を満たす値に [予約] を設定します。
    • ゲスト OS のリングバッファサイズの拡張: Windows ゲスト内の Rx リングバッファサイズを増やすことで、パケットバーストに対するバッファの余裕が大きくなります。
  2. Windows ゲストで [デバイス マネージャー] を開きます。
    • [VMXNET3 Ethernet Adapter] を右クリックし、[プロパティ] を選択します。
    • [詳細設定] タブを開き、[Small Rx Buffers]、[Rx Ring #1 Size]、および [Rx Ring #2 Size] を表示します。
    • これらの値を許容される最大制限まで増やします。 (これにより、仮想マシンの RAM 使用量が増加します)

クラスタの容量制限で CPU 予約を適用できない場合、ゲスト OS でリングバッファサイズを拡張すること (上記のステップ 2) で一時的な改善が見込まれます。ただし、リソース競合がピークに達した際のパケットドロップを完全に解消できない可能性があります。