Ensembles de processeurs
Les ensembles de processeurs fournissent des API pour déclarer l’affinité d’application de manière « réversible » compatible avec la gestion de l’alimentation du système d’exploitation. En outre, l’API permet aux applications de réaffinitiser tous les threads d’arrière-plan du processus à un sous-ensemble de processeurs à l’aide du mécanisme Process Default pour éviter les interférences des threads de système d’exploitation au sein du processus. Certaines versions de Windows prennent en charge les stratégies de réservation core, dans lesquelles un sous-ensemble des ensembles de processeurs du système peut être consacré à l’utilisation exclusive d’applications et de charges de travail individuelles.
L’API d’ensemble de processeurs fonctionne avec les ID de jeu d’UC, qui sont associés à des affinités de processeur virtuel. Sur la plupart des systèmes, et dans la plupart des conditions, chaque ID de jeu de processeurs est mappé directement à un seul processeur logique de base . Un thread affiniténé avec un jeu de processeurs donné s’exécute généralement sur l’un des processeurs de sa liste d’ID d’ensemble de processeurs sélectionnés.
Les ensembles de processeurs réservés peuvent être déterminés en inspectant l’indicateur Alloué dans le SYSTEM_CPU_SET_INFORMATION. Le système contrôle l’accès aux ensembles d’UC réservés et l’affectation peut être interrogée à l’aide de l’indicateur AllocationToTargetProcess de la structure SYSTEM_CPU_SET_INFORMATION. Si un processus tente d’utiliser une attribution d’ensembles de processeurs qui est allouée exclusivement à d’autres processus, sa demande est ignorée et les threads attribués à des ensembles d’UC non autorisés sont planifiés ailleurs. Les ensembles de processeurs peuvent être attribués à deux niveaux. Les jeux d’UC par défaut de processus sont attribués à tous les threads d’un processus qui n’ont pas d’affectation au niveau thread sélectionné. Si un thread ou un processus a un jeu de masques d’affinité restrictif, le masque d’affinité est respecté au-dessus de toute attribution de jeu d’UC en conflit. Sur les systèmes à plusieurs groupes, les attributions d’UC sont ignorées si elles se trouvent dans des groupes qui ne correspondent pas au groupe dans le masque d’affinité du thread. Si un thread est affecté à plusieurs ensembles de processeurs valides, il s’exécute sur l’un des processeurs correspondants en fonction de ses priorités et des priorités des threads concurrents sur ces processeurs.
Fonctions/énumérations/structures des ensembles de processeurs
- Fonction GetProcessDefaultCpuSets
- GetProcessDefaultCpuSetMasks , fonction
- GetSystemCpuSetInformation, fonction
- GetThreadSelectedCpuSets , fonction
- GetThreadSelectedCpuSetMasks , fonction
- Fonction SetProcessDefaultCpuSets
- Fonction SetProcessDefaultCpuSetMasks
- Fonction SetThreadSelectedCpuSets
- Fonction SetThreadSelectedCpuSetMasks
- énumération CPU_SET_INFORMATION_TYPE
- structure SYSTEM_CPU_SET_INFORMATION