2.6. パケットドロップの原因
キューがいっぱいになると、通常はキューが十分に速く排出されないときに、パケットがドロップされます。ボトルネックは、キューが十分に速く排出されていないときにキューを排出することになっているエンティティーです。ほとんどの場合、ドロップカウンターは、ドロップされたパケットを追跡するために使用されます。ハードウェアまたはソフトウェアの設計にバグがあると、パケットがドロップカウンターをスキップすることがあります。
データプラン開発キット (DPDK) には、パケットを転送するための testpmd アプリケーションが含まれています。本章のシナリオでは、testpmd が仮想マシンにインストールされ、論理コア(lcore)を持つポートをポーリングして、あるポートから別のポートにパケットを転送します。testpmd は、テストするトラフィックジェネレーターと使用します。この場合は、物理仮想物理(PVP)パス間のスループットをテストします。
2.6.1. OVS-DPDK が遅すぎて物理 NIC をドレインできない リンクのコピーリンクがクリップボードにコピーされました!
この例は、PMD スレッドが物理ネットワークアダプター (dpdk0) の受信 (RX) キューのポーリングを担当していることを示しています。PMD スレッドがパケット量に追いつかない場合、または中断された場合、パケットがドロップされる可能性があります。
図2.1 物理アダプター RX キューのポーリング
次のコマンドは、dpdk0 インターフェイスからの統計を表示します。ovs-dpdk が物理アダプターを十分な速度で排出していないためにパケットがドロップされている場合は、rx_dropped の値が急速に増加していることがわかります。
PMD の NUMA ノードごとに物理 CPU コアは 1 つだけにする必要があります。