Prise en charge de plus de 64 processeurs logiques sous Windows
0 réponses

Chris
il y a 3 ans #271632
Les versions 64 bits de Windows 7 et de Windows Server 2008 R2 et les versions ultérieures de Windows prennent en charge plus de 64 processeurs logiques sur un seul ordinateur.
Pour tout système comportant plus de 64 threads logiques, Windows répartit uniformément les threads dans des "groupes de processeurs", de sorte qu'aucun groupe ne comporte plus de 64 threads. Sur un système à deux sockets avec deux CPU à 28 cœurs et 112 threads au total, par exemple, Windows créera deux groupes de processeurs, chacun avec 56 threads. Sur un système à socket unique avec 64 cœurs et 128 threads, deux groupes de processeurs seront créés, chacun avec 64 threads.
Par défaut, sous Windows 64 bits, une application est limitée à un seul groupe. Une application qui nécessite l'utilisation de plusieurs groupes afin de pouvoir fonctionner sur plus de 64 processeurs doit déterminer explicitement où exécuter ses threads et il lui incombe de définir les affinités processeur des threads avec les groupes souhaités.
Il s'agit d'une mise à jour assez simple, comme le montre cet article de Microsoft : https://docs.microsoft.com/en-us/windows/win32/procthread/processor-groups
Par exemple, je viens d'acheter un serveur biprocesseur à 96 cœurs pour exécuter SQX, mais comme le système d'exploitation (Windows Server 2019) crée deux groupes de processeurs à 48 cœurs, SQX ne profitera que de 48 cœurs, soit la moitié de la puissance de traitement du serveur. L'idéal serait bien sûr d'utiliser TOUTE la puissance de traitement disponible, et cela ressemble à une simple modification de code à l'aide de l'attribut étendu PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY.