0 votes

Comment puis-je déterminer par programme s'il s'agit d'un processeur multi-core, hyperthreading ou multi-processeur ?

Je sais comment obtenir le type de processeur, c'est peut-être le seul moyen, mais je recherche en fait un moyen de déterminer à partir d'une application si elle s'exécute sur un processeur multi-core ou sur un processeur single-core hyper-threading .

(contexte : les hébergeurs de certains de mes clients sont très vagues quant aux ressources qu'ils mettent à disposition via les images VMWare. Cette application est censée fonctionner en multi-core, mais les performances ont diminué depuis son dernier "déménagement". Normalement, sur un système multi-core, un cœur connaît des pics sur un thread, et pas l'autre. Sur ce "multi-core", les deux processeurs connaissent des pics, même sur des applications à un seul fil).

4voto

Hassan Syed Points 10746

System.Environment.ProcessorCount qui comprendra également les processeurs hyperthreadés. Que Vmware peut ou ne peut pas exposer. Il y a plus de chances qu'il soit exposé si le processeur est activé VT ET si vous utilisez une technologie d'hyperviseur activée baremetal.

Si vous avez XP-SP3/WIN2k3 ou plus, vous pouvez utiliser WMI pour sortir :

Win32_ComputerSystem.NumberOfProcessors returns physical count

Win32_ComputerSystem.NumberOfLogicalProcessors returns logical count

Si les valeurs sont les mêmes, il est probable que votre système ne dispose pas de la HT ou qu'elle n'est pas activée.

Vous pouvez commencer à explorer comment extraire les informations WMI dans .NET à partir des éléments suivants ce tutoriel .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X