3

4 つの Intel Xeon E7 4850 プロセッサ (NUMA ノード) を搭載したハイエンド サーバー マシンがあり、それぞれに 10 コアと 2 スレッドがあります。つまり、事実上、1 台のマシンに 80 コアが搭載されています。(Windowsタスクマネージャーは80コアを示しています)私の質問は、Runtime.getRuntime()。availableProcessors()を実行すると40が返されるため、アプリケーションは40スレッドしか生成しません。なぜそうなのですか?

4

1 に答える 1

2

バグのある Windows 2003 を使用している場合を除きます

...ハイパースレッディングが有効になっている場合、「40 コア」というカウントは間違った結果になります。これは、Windows が正しい論理 CPU コア数を報告するためです。

Java 修正プログラムが利用できない場合は、JNI を使用して GetLogicalProcessorInformation() Windows API 呼び出しを呼び出すことができます(ソース コードが含まれており、XP SP3 以降で動作します)。

于 2012-11-11T15:51:50.377 に答える