CPU-Sätze

CPU-Sets stellen APIs bereit, um Anwendungsaffinität auf "weiche" Weise zu deklarieren, die mit der Energieverwaltung des Betriebssystems kompatibel ist. Darüber hinaus bietet die API Anwendungen die Möglichkeit, alle Hintergrundthreads im Prozess mithilfe des Prozessstandardmechanismus auf eine Teilmenge von Prozessoren zu reaffinitisieren, um Störungen durch Betriebssystemthreads innerhalb des Prozesses zu vermeiden. Einige Versionen von Windows unterstützen Core-Reservierungsrichtlinien, in denen eine Teilmenge der CPU-Sätze des Systems der exklusiven Verwendung einzelner Anwendungen und Workloads gewidmet werden kann.

Die CPU-Set-API funktioniert mit CPU-Set-IDs, die virtuellen Prozessoraffinitäten zugeordnet sind. Auf den meisten Systemen und unter den meisten Bedingungen wird jede CPU-Satz-ID direkt einem einzelnen logischen Heimprozessor zugeordnet. Ein Thread, der für einen bestimmten CPU-Satz affinitiert ist, wird in der Regel auf einem der Prozessoren in der Liste der ausgewählten CPU-Satz-IDs ausgeführt.

Reservierte CPU-Sätze können durch Überprüfen des Zugeordneten Flags im SYSTEM_CPU_SET_INFORMATION bestimmt werden. Das System steuert den Zugriff auf reservierte CPU-Sätze, und die Zuweisung kann mithilfe des AllocatedToTargetProcess-Flags der SYSTEM_CPU_SET_INFORMATION-Struktur abgefragt werden. Wenn ein Prozess versucht, eine CPU-Satzzuweisung zu verwenden, die ausschließlich anderen Prozessen zugeordnet ist, wird seine Anforderung ignoriert, und Threads, die nicht zulässigen CPU-Sätzen zugewiesen sind, werden an anderer Stelle geplant. CPU-Sätze können auf zwei Ebenen zugewiesen werden. Die Prozessstandard-CPU-Sätze werden allen Threads in einem Prozess zugewiesen, für die keine Zuweisung auf der Thread selected-Ebene vorhanden ist. Wenn für einen Thread oder Prozess eine restriktive Affinitätsmaske festgelegt ist, wird die Affinitätsmaske vor allen in Konflikt stehenden CPU-Satzzuweisungen berücksichtigt. Auf Systemen mit mehreren Gruppen werden CPU-Zuweisungen ignoriert, wenn sie sich in Gruppen befinden, die nicht mit der Gruppe in der Affinitätsmaske des Threads übereinstimmen. Wenn ein Thread mehreren gültigen CPU-Sätzen zugewiesen ist, wird er auf einem der entsprechenden Prozessoren gemäß seinen Prioritäten und den Prioritäten konkurrierender Threads auf diesen Prozessoren ausgeführt.

CPU-Satzfunktionen/Enumerationen/Strukturen