CPU セット
CPU セットは、OS 電源管理と互換性のある "ソフト" な方法でアプリケーション アフィニティを宣言する API を提供します。 さらに、API は、プロセス内の OS スレッドからの干渉を回避するために、プロセスの既定の メカニズムを使用して、プロセス内のすべてのバックグラウンド スレッドをプロセッサのサブセットに再初期化する機能をアプリケーションに提供します。 一部のバージョンの Windows では、コア予約ポリシーがサポートされています。このポリシーでは、システムの CPU セットのサブセットを個々のアプリケーションとワークロードの排他的な使用に専念できます。
CPU セット API は、仮想プロセッサ アフィニティに関連付けられている CPU セット ID で動作します。 ほとんどのシステムでは、ほとんどの条件下では、各 CPU セット ID は、1 つの ホーム 論理プロセッサに直接マップされます。 特定の CPU セットに関連付けられたスレッドは、通常、選択した CPU セット ID の一覧のプロセッサのいずれかで実行されます。
予約されている CPU セットは、SYSTEM_CPU_SET_INFORMATIONの Allocated フラグを調べることで決定できます。 システムは予約済み CPU セットへのアクセスを制御し、SYSTEM_CPU_SET_INFORMATION構造体の AllocatedToTargetProcess フラグを使用して割り当てを照会できます。 プロセスが他のプロセスにのみ割り当てられている CPU セット割り当てを使用しようとすると、その要求は無視され、許可されていない CPU セットに割り当てられたスレッドは別の場所でスケジュールされます。 CPU セットは、2 つのレベルで割り当てることができます。 プロセスの既定の CPU セットは、スレッド選択レベルで割り当てがないプロセス内のすべてのスレッドに割り当てられます。 スレッドまたはプロセスに制限の厳しいアフィニティ マスクが設定されている場合は、競合する CPU セットの割り当てよりもアフィニティ マスクが優先されます。 マルチグループ システムでは、CPU 割り当ては、スレッドのアフィニティ マスク内のグループと一致しないグループ内にある場合は無視されます。 スレッドが複数の有効な CPU セットに割り当てられている場合、その優先順位とそれらのプロセッサ上の競合スレッドの優先順位に従って、対応するプロセッサのいずれかで実行されます。
CPU Set Functions/Enumerations/Structures
- GetProcessDefaultCpuSets関数の
- GetProcessDefaultCpuSetMasks関数をする
- GetSystemCpuSetInformation関数の
- GetThreadSelectedCpuSets関数をする
- GetThreadSelectedCpuSetMasks関数をする
- SetProcessDefaultCpuSets関数の
- SetProcessDefaultCpuSetMasks関数の
- SetThreadSelectedCpuSets関数をする
- SetThreadSelectedCpuSetMasks関数をする
- CPU_SET_INFORMATION_TYPE 列挙型
- SYSTEM_CPU_SET_INFORMATION 構造体