簡體   English   中英

如何以編程方式確定是在多核,超線程還是在多處理器上?

[英]How can I determine programmatically whether on multi-core, hyperthreading or multi-processor?

我知道如何獲取處理器類型,也許那是唯一的方法,但是我實際上是在尋找一種方法,從應用程序確定它是在多核處理器上運行還是在超線程單核處理器上運行

(背景:我的一些客戶的托管服務提供商非常不清楚他們通過VMWare映像提供了哪些資源。該應用程序應該在多核上運行,但是自上次“遷移”以來,其性能一直是不利的。)多核,一個核尖峰在一個線程上,而不是在另一個線程上。在這種“多核”上,兩個處理器都在峰值,即使在單線程應用程序上也是如此。)

System.Environment.ProcessorCount還將包括超線程處理器。 哪個或哪些Vmware可能不會公開。 如果處理器啟用了VT,並且您使用的是啟用裸機的虛擬機管理程序技術,則很有可能會暴露出來。

如果您具有XP-SP3 / WIN2k3或更高版本,則可以使用WMI退出:

Win32_ComputerSystem.NumberOfProcessors returns physical count

Win32_ComputerSystem.NumberOfLogicalProcessors returns logical count

如果值相同,則可能是您的系統沒有HT或未啟用它。

您可以開始探索如何從本教程中提取.NET中的WMI信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM