Wie kann ich programmatisch festzustellen, ob auf Multi-Core-, Hyper-Threading oder Multi-Prozessor?
-
08-07-2019 - |
Frage
Ich weiß, wie den Prozessortyp zu bekommen, vielleicht ist das der einzige Weg, aber ich bin eigentlich auf der Suche nach eine Möglichkeit, aus einer Anwendung, um festzustellen, ob es auf einem Multi-Core-Prozessor läuft oder auf einem hyper-Threading-Single-Core-Prozessor .
(Hintergrund:. Das Hosting-Anbieter von einigen meiner Kunden sehr vage ist über welche Ressourcen sie durch VMWare Bilder zur Verfügung zu stellen Diese Anwendung soll auf Multi-Core laufen, hat aber schädlich Performance seit seinem letzten „move“ gesehen. normalerweise auf Multi-Core, ein Kernspitzen auf einem Faden, und das andere nicht. auf dieser "Multi-Core", beide Prozessoren Spike, auch auf Single-threaded-Anwendungen.)
Lösung
System.Environment.ProcessorCount Welche auch wird mit Hyper-Threading-Prozessoren enthalten. Welche Vmware kann oder auch nicht aussetzen. Die Chancen sind höher, dass es ausgesetzt wird, wenn der der Prozessor VT aktiviert ist und Sie sind ein BareMetal aktiviert Hypervisor-Technologie.
Wenn Sie XP-SP3 / win2k3 oder höher Sie WMI verwenden können, um herausziehen:
Win32_ComputerSystem.NumberOfProcessors returns physical count
Win32_ComputerSystem.NumberOfLogicalProcessors returns logical count
Wenn die Werte gleich sind, dann stehen die Chancen, Ihr System nicht HT hat oder hat es nicht aktiviert ist.
Sie können die Erkundung beginnen, wie WMI Info in .NET ziehen aus diesem Tutorial .