Je sais comment obtenir le type de processeur, peut-être que c'est le seul moyen, mais je cherche un moyen de déterminer à partir d'une application si elle fonctionne sur un processeur multi-core ou sur un single-threading processeur principal. (Background: les hébergeurs de certains de mes clients sont très vagues sur les ressources qu'ils mettent à disposition via les images VMWare.) Cette application est supposée fonctionner sur plusieurs cœurs, mais a connu des performances préjudiciables depuis son dernier "move" Normalement, sur un multicœur, un noyau de pointe sur un thread, et pas l'autre.Pour ce "multi-core", les deux processeurs dopent, même sur des applications monothread.)Comment puis-je déterminer par programme si multi-core, hyperthreading ou multi-processeur?
0
A
Répondre
4
System.Environment.ProcessorCount comprendra également les processeurs hyperthreaded. Quel Vmware peut ou ne peut pas exposer. Les chances sont plus élevées qu'il sera exposé si le processeur est activé VT ET que vous utilisez une technologie d'hyperviseur activée par baremetal.
Si vous avez XP SP3/WIN2K3 ou au-dessus 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, alors les chances sont que votre système ne dispose pas HT ou ne l'a pas permis .
Vous pouvez commencer à explorer comment extraire les informations WMI dans .NET à partir du this tutorial.
Questions connexes
- 1. monoprocesseur ou multiprocesseur
- 2. Comment déterminer par programme si un fichier image est géoréférencé
- 3. Comment déterminer par programme si la propriété ndb est multivaleur
- 4. Comment déterminer par programme si ehcache est en cours d'exécution?
- 5. Comment déterminer par programme supportedRuntime dans Powershell?
- 6. Comment déterminer par programme si l'application a été piratée ou piratée?
- 7. déterminer par programme si l'application android a été payée
- 8. Déterminer si ELMAH est activé ou non?
- 9. Multicore et thread. Chronomètre .Net?
- 10. Comment déterminer par programme comment un DVD ou un disque dur est connecté - Maître ou Esclave?
- 11. Déterminer par programme si natif .exe est 32 bits ou 64 bits
- 12. Comment puis-je déterminer par programme mon type de processeur?
- 13. Comment déterminer par programme quels PowerShell snapin sont installés
- 14. Déterminer par programme la configuration active
- 15. Déterminer par programme le mode d'authentification
- 16. Comment déterminer si WCF 3 et ASP.NET sont enregistrés avec IIS 7 par programme
- 17. Comment déterminer par programme si le projet d'équipe a configuré le portail sharepoint?
- 18. Comment déterminer si PDF est étiqueté ou non?
- 19. Comment déterminer par programme si un disque est crypté sous OS X?
- 20. Comment déterminer si radioButton.Checked est défini par programmation ou par un clic de souris?
- 21. NullPointerException dans solr multicore
- 22. Comment déterminer css-class-wrapper par programme dans Liferay?
- 23. Comment puis-je déterminer par programme si un fichier MP3 est CBR ou VBR? (De préférence en utilisant C#)
- 24. Déterminer si Linux ou Windows en C++
- 25. Comment déterminer l'application est en cours d'exécution dans iphone ou ipod par programme
- 26. Comment déterminer par programme les applications audio installées sur Android
- 27. Déterminer par programme Backbone.js .on callbacks?
- 28. comment déterminer par programme les rôles maître/esclave Bluetooth?
- 29. Comment fonctionne le multiprocesseur python?
- 30. C/C++/Assemblage Détecter par programme si l'hyper-threading est actif sous Windows, Mac et Linux
Je connais WMI, merci. Je vais essayer ça, ça peut marcher. Aussi étrange que cela soit, taskmgr et CPU-Z donnent le même nombre de processeurs. Mais CPU-Z montre un noyau par processeur et je suis certain que le type est à l'origine (physiquement) un quadcore. Cela peut être difficile à obtenir. – Abel
donner à ce regard: http://software.intel.com/en-us/articles/hyper-threading-technology-and-multi-core-processor-detection/ Je nai regardé les vidéos. Je soupçonne que vous utilisez un logiciel vmware ou une version qui n'est pas compatible VT, ou il est désactivé dans le BIOS. dans ce cas, il s'agit simplement de programmer artificiellement votre VM sur deux cœurs. –
http://communities.vmware.com/docs/DOC-5101 une discussion sur l'hyperthreading et ESX si vous l'utilisez comme hyperviseur baremetal, montrant qu'ESX peut programmer des VM sur des cœurs virtuels. Il est mentionné que les cœurs virtuels ne sont pas utilisés jusqu'à ce que la demande excède les cœurs disponibles. Je me demande comment les choses fonctionneraient sur les processeurs compatibles VT, hmm. Si je me souviens bien, vous pouvez lier des machines virtuelles dans ESX à des processeurs spécifiques. –