Processeurs physiques, logiques et nombre de cœurs

Bonjour,

Historiquement, les ordinateurs étaient équipés d'un seul processeur, puis la notion de processeurs logiques est apparue avec ce qu'on appelait à l'époque l'hyper-threading (ou les processeurs multi-threadés), et nous voyons maintenant des ordinateurs équipés de deux cœurs, quatre cœurs et bien plus. 

Le but de ce rapide post est de vous présenter une méthode simplissime pour déterminer le nombre de processeurs physiques d’une machine, mais aussi le nombre de cœurs et le nombre de processeurs logiques.

Tout cela peut se faire via WMI sur Windows Vista et versions supérieures (mais aussi sur Windows 2003 avec le hotfix suivant installé : http://support.microsoft.com/kb/932370/en-us).

Le code vbscript suivant montre comment faire, notez que pour savoir si un processeur est hyper-threadé, il suffit de comparer le nombre de processeurs logiques et le nombre de cœurs :

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Processor")

WScript.Echo "Nombre de processeurs physiques : " & colItems.Count

For Each objItem in colItems

      Wscript.Echo "Processeur : " & objItem.Name

      Wscript.Echo "Nombre de processeurs logiques : " & objItem.NumberOfLogicalProcessors

      Wscript.Echo "Nombre de coeurs : " & objItem.NumberOfCores

      if objItem.NumberOfCores < objItem.NumberOfLogicalProcessors then

            WScript.Echo "Ce processeur est hyper-threadé"

      else

            WScript.Echo "Ce processeur n'est pas hyper-threadé"

      end if

Next

A bientôt
Aurélien