マルチコア、ハイパースレッディング、マルチプロセッサのいずれでプログラムで判断できますか?

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

質問

プロセッサタイプを取得する方法は知っていますが、それが唯一の方法かもしれませんが、実際には、アプリケーションからマルチコアプロセッサで実行されているか、それともマルチコアプロセッサで実行されているかを判断する方法を探していますハイパースレッディングシングルコアプロセッサ 。

(背景:一部のクライアントのホスティングプロバイダーは、VMWareイメージを介してどのリソースを利用可能にするかについて非常にあいまいです。このアプリケーションはマルチコアで実行されるはずですが、最後の「移動」以来、パフォーマンスが低下しています。通常、マルチコアでは、1つのコアが1つのスレッドでスパイクし、もう1つのスレッドではありません。この「マルチコア」では、シングルスレッドアプリケーションでも、両方のプロセッサがスパイクします。)

役に立ちましたか?

解決

System.Environment.ProcessorCountハイパースレッドプロセッサも含まれます。どのVmwareが公開するかしないか。プロセッサがVT対応であり、ベアメタル対応のハイパーバイザーテクノロジーを使用している場合、露出される可能性が高くなります。

XP-SP3 / WIN2k3以上を使用している場合WMIを使用して引き出すことができます:

Win32_ComputerSystem.NumberOfProcessors returns physical count

Win32_ComputerSystem.NumberOfLogicalProcessors returns logical count

値が同じ場合、システムにHTがないか、有効になっていない可能性があります。

このチュートリアル。

scroll top