Suporte a mais de 64 processadores lógicos no Windows
0 respostas

Chris
3 anos atrás #271632
As versões de 64 bits do Windows 7 e do Windows Server 2008 R2 e versões posteriores do Windows suportam mais de 64 processadores lógicos em um único computador.
Para qualquer sistema com mais de 64 threads lógicos, o Windows dividirá uniformemente os threads em "Processor Groups", de modo que nenhum grupo tenha mais de 64 threads. Em um sistema de soquete duplo com duas CPUs de 28 núcleos e 112 threads totais, por exemplo, o Windows criará dois grupos de processadores, cada um com 56 threads. Em um sistema de soquete único com 64 núcleos e 128 threads, serão criados dois grupos de processadores, cada um com 64 threads.
Por padrão, no Windows de 64 bits, um aplicativo é limitado a um único grupo. Um aplicativo que requer o uso de vários grupos para que possa ser executado em mais de 64 processadores deve determinar explicitamente onde executar seus threads e é responsável por definir as afinidades de processador dos threads para os grupos desejados.
Parece ser uma atualização bastante simples, de acordo com este artigo da Microsoft: https://docs.microsoft.com/en-us/windows/win32/procthread/processor-groups
Por exemplo, acabei de comprar um servidor de 96 núcleos com processador duplo para executar o SQX, mas como o sistema operacional (Windows Server 2019) cria dois grupos de processadores de 48 núcleos, o SQX só aproveitará 48 núcleos, ou seja, metade da capacidade de processamento do servidor. Obviamente, seria ideal usar TODA a capacidade de processamento disponível, e parece ser uma simples alteração de código usando o atributo estendido PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY.