CPU セット

CPU セットは、OS 電源管理と互換性のある "ソフト" な方法でアプリケーション アフィニティを宣言する API を提供します。 さらに、API は、プロセス内の OS スレッドからの干渉を回避するために、 プロセスの既定 のメカニズムを使用して、プロセス内のすべてのバックグラウンド スレッドをプロセッサのサブセットに再初期化する機能をアプリケーションに提供します。 一部のバージョンの Windows では、コア予約ポリシーがサポートされています。このポリシーでは、システムの CPU セットのサブセットを個々のアプリケーションとワークロードの排他的な使用に専念できます。

CPU セット API は、仮想プロセッサ アフィニティに関連付けられている CPU セット ID と連携します。 ほとんどのシステムでは、ほとんどの条件下では、各 CPU セット ID は 1 つの ホーム 論理プロセッサに直接マップされます。 特定の CPU セットにアフィニティされたスレッドは、通常、選択した CPU セット ID の一覧にあるいずれかのプロセッサで実行されます。

予約されている CPU セットは、SYSTEM_CPU_SET_INFORMATIONの [割り当て済み ] フラグを調べることで決定できます。 システムは予約済み CPU セットへのアクセスを制御し、SYSTEM_CPU_SET_INFORMATION構造体の AllocatedToTargetProcess フラグを使用して割り当てを照会できます。 プロセスが他のプロセスのみに割り当てられた CPU セット割り当てを使用しようとすると、その要求は無視され、許可されていない CPU セットに割り当てられたスレッドは他の場所でスケジュールされます。 CPU セットは、2 つのレベルで割り当てることができます。 プロセスの既定の CPU セットは、スレッド選択レベルで割り当てられていないプロセス内のすべてのスレッドに割り当てられます。 スレッドまたはプロセスに制限の厳しいアフィニティ マスクが設定されている場合、競合する CPU セットの割り当てよりもアフィニティ マスクが優先されます。 複数グループ システムでは、CPU 割り当ては、スレッドのアフィニティ マスク内のグループと一致しないグループ内にある場合は無視されます。 スレッドが複数の有効な CPU セットに割り当てられている場合、その優先順位とそれらのプロセッサ上の競合スレッドの優先順位に従って、対応するプロセッサのいずれかで実行されます。

CPU セット関数/列挙/構造体