VMMQ に対する VPort の割り当て
Virtual Machine Multiple Queues (VMMQ) (仮想マシン複数キュー) 機能が存在する場合、NDIS は次の方法で VPort を割り当てます。
NDIS は OID_NIC_SWITCH_CREATE_VPORT OID 要求を発行することによって、ミニポート アダプターに既定以外の VPort を作成します。 RSS 物理関数 (PF) VPort を作成する場合、NDIS は次のように NDIS_NIC_SWITCH_VPORT_PARAMETERS 構造を初期化します。
NDIS は、AttachedFunctionId フィールドを NDIS_PF_FUNCTION_ID に設定します。
VMMQ が有効になっている場合、NDIS は NumQueuePairs フィールドに、この VPort に使用すべき VMMQ キュー ペアの数を設定します。 この数には、この VPort の既定の RSS プロセッサが含まれます。 プロセッサの合計数がこの数を超えないことを保証します。 VMMQ が無効になっている場合、NDIS はこの値を 1 に設定します。
VMMQ が有効になっている場合、ProcessorAffinity フィールドはミニポート アダプターがこの VPort に使用する必要がある潜在的な RSS プロセッサのビットマスクを定義します。 VPort の間接テーブル エントリを設定するためにネットワーク スタックが使用したプロセッサは、このビットマスクが識別するプロセッサのサブセットです。 マスクは NdisGetRssProcessorInformation の呼び出しから返される RSS プロセッサのサブセットであり、設定されたビット数が VPort に要求された RSS キューの数を超える可能性があります。 VMMQ が無効になっている場合、ミニポート アダプターは VPort キューのアフィニティを設定する際に、このビットマスクで指定された最小プロセッサ番号を使用する必要があります。
NDIS は、VPort の作成後に NumQueuePairs メンバーが更新されたことを示すNDIS_NIC_SWITCH_VPORT_PARAMS_NUM_QUEUE_PAIRS_CHANGED フラグを設定します。 VMMQ を有効にすると、既定の VPort と既定以外の VPort のキューの数を更新できます。