Conjuntos de CPU
Os conjuntos de CPU fornecem APIs para declarar a afinidade do aplicativo de uma maneira 'suave' que é compatível com o gerenciamento de energia do sistema operacional. Além disso, a API fornece aos aplicativos a capacidade de reaffinitizar 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 suportam políticas de reserva principal, nas quais um subconjunto dos conjuntos de CPU do sistema pode ser dedicado ao uso exclusivo de aplicativos e cargas de trabalho individuais.
A API de conjunto de CPU funciona com IDs de conjunto de CPU, que estão associadas a afinidades de processador virtual. Na maioria dos sistemas, e na maioria das condições, cada ID de conjunto de CPU será mapeado diretamente para um único processador lógico doméstico. Um thread afiliado a um determinado conjunto de CPU normalmente será executado em um dos processadores em sua lista de IDs de conjunto de CPU selecionados.
Os conjuntos de CPU reservados podem ser determinados inspecionando o sinalizador Allocated no SYSTEM_CPU_SET_INFORMATION. O sistema controla o acesso a conjuntos de CPU reservados e a atribuição pode ser consultada usando o AllocatedToTargetProcess sinalizador 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 têm uma atribuição no nível Thread Selecionado. Se um thread ou processo tiver um conjunto de máscaras de afinidade restritivas, a máscara de afinidade será respeitada acima de qualquer atribuição conflitante do conjunto de CPUs. Em sistemas com vários grupos, as atribuições de CPU sã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 de 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
- SetProcessDefaultCpuSets função
- Função de SetProcessDefaultCpuSetMasks
- SetThreadSelectedCpuSets função
- SetThreadSelectedCpuSetMasks função
- CPU_SET_INFORMATION_TYPE enumeração
- SYSTEM_CPU_SET_INFORMATION estrutura