Wie kann ich programmatisch festzustellen, ob auf Multi-Core-, Hyper-Threading oder Multi-Prozessor?

StackOverflow https://stackoverflow.com/questions/1817268

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.)

War es hilfreich?

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 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top