Conjuntos de CPU
Os Conjuntos de CPU fornecem APIs para declarar a afinidade do aplicativo de maneira "flexível" compatível com o gerenciamento de energia do sistema operacional. Além disso, a API fornece aos aplicativos a capacidade de refinar todos os threads em segundo plano no processo para um subconjunto de processadores usando o mecanismo Process Default para evitar interferência de threads do sistema operacional dentro do processo. Algumas versões do Windows dão suporte a políticas de Reserva Principal, nas quais um subconjunto dos Conjuntos de CPU do sistema pode ser dedicado ao uso exclusivo de aplicativos individuais e cargas de trabalho.
A API de Conjunto de CPU funciona com IDs de conjunto de CPU, que são associadas a afinidades de processador virtual. Na maioria dos sistemas e na maioria das condições, cada ID do Conjunto de CPU será mapeada diretamente para um único processador lógico doméstico . Um thread afinidadedo com um determinado conjunto de CPU normalmente será executado em um dos processadores em sua lista de IDs de conjunto de CPU selecionadas.
Os Conjuntos de CPU reservados podem ser determinados inspecionando o sinalizador Alocado no SYSTEM_CPU_SET_INFORMATION. O sistema controla o acesso a conjuntos de CPU reservados e a atribuição pode ser consultada usando o sinalizador AllocatedToTargetProcess da estrutura SYSTEM_CPU_SET_INFORMATION. Se um processo tentar usar uma atribuição de Conjunto de CPU alocada exclusivamente para outros processos, sua solicitação será ignorada e os threads atribuídos a conjuntos de CPU não permitidos serão agendados em outro lugar. Os conjuntos de CPU podem ser atribuídos em dois níveis. Os conjuntos de CPU Padrão de Processo são atribuídos a todos os threads em um processo que não tem uma atribuição no nível Thread Selected. Se um thread ou processo tiver um conjunto restritivo de máscaras de afinidade, a máscara de afinidade será respeitada acima de qualquer atribuição conflitante do Conjunto de CPU. Em sistemas de vários grupos, as atribuições de CPU serão ignoradas se estiverem em grupos que não correspondem ao grupo na máscara de afinidade do thread. Se um thread for atribuído a vários conjuntos de CPU válidos, ele será executado em um dos processadores correspondentes de acordo com suas prioridades e as prioridades dos threads concorrentes nesses processadores.
Funções/enumerações/estruturas do conjunto de CPU
- Função GetProcessDefaultCpuSets
- Função GetProcessDefaultCpuSetMasks
- Função GetSystemCpuSetInformation
- Função GetThreadSelectedCpuSets
- Função GetThreadSelectedCpuSetMasks
- Função SetProcessDefaultCpuSets
- Função SetProcessDefaultCpuSetMasks
- Função SetThreadSelectedCpuSets
- Função SetThreadSelectedCpuSetMasks
- enumeração CPU_SET_INFORMATION_TYPE
- estrutura SYSTEM_CPU_SET_INFORMATION