Utiliser WMIC pour connaître le nombre physiques de processeurs avant l’installation de SQL Server

Avec les nouvelles architectures multicoeurs des processeurs actuels il est devenu difficile depuis le système d’exploitation de connaître l’architecture physique des processeurs d’un serveur. Le gestionnaire de périphérique de Windows nous offre une vue logique de l’architecture processeur qui peut être trompeuse. Par exemple lorsque celui-ci affiche 4 CPU rien ne dit à priori que nous avons à faire à 4 processeurs physiques ou 2 processeurs physiques dual-core. Quelques fois il arrive que la description donnée au processeur peut nous mettre sur la voie mais ce n’est pas toujours le cas. Il existe également des outils tiers qui permettent de donner précisément ces informations comme ceux fournis par sysinternals mais encore faut il les avoir sous la main ou qu’il soit permis de les utiliser sur les serveurs d’un client par exemple. Heureusement Windows, au moyen des WMI permettent de retrouver rapidement cette information. Je pars du principe que SQL Server n’est pas encore installé auquel cas nous aurions pu utiliser la DMV sys.dm_os_sys_info pour retrouver cette information.

Il y a plusieurs façons d’utiliser les WMI, soit par script vbs ou powershell, soit par l’interface de commande WMIC qui permet d’interroger directement les fournisseurs concernés et ceci sans avoir à installer ou télécharger quoi que ce soit sur le serveur. Nous utiliserons donc l’interface de commande WMIC en interrogerant la classe Win32_Processor qui contient une propriété intéressante SocketDesignation. Voici la commande à exécuter :

> wmic cpu get SocketDesignation

ou

> wmic path Win32_Processor get SocketDesignation

Les 2 commandes sont strictement équivalentes. Voici le résultat obtenu sur un serveur avec 4 processeurs quadcore :

wmi_cpu

Cette propriété retourne pour chaque processeur physique la désignation du socket dans lequel il se trouve alors que pour un processeur logique le nom du premier socket est retourné. Dans notre cas, cela signifie qu’il existe 4 processeurs physiques + 12 autres processeurs logiques ce qui fait un total de 16 processeurs. On peut rapidement en déduire que nous avons à faire à 4 processeurs quadecore. (16 processeurs = 4 processeurs physiques x 4 processeurs logiques).

Note : Il existe d’autres propriétés intéressantes comme NumberOfCores et NumberOfLogicalProcessors avec lesquelles il est facile de déduire le nombre de processeurs physiques sur un serveur mais ces propriétés ne sont malheureusement pas disponible avec Windows 2003 sans avoir à installer un hotfix proposé par Microsoft. En version 2008, ces propriétés sont à nouveau disponible.

Laisser un commentaire