4 つの Intel Xeon E7 4850 プロセッサ (NUMA ノード) を搭載したハイエンド サーバー マシンがあり、それぞれに 10 コアと 2 スレッドがあります。つまり、事実上、1 台のマシンに 80 コアが搭載されています。(Windowsタスクマネージャーは80コアを示しています)私の質問は、Runtime.getRuntime()。availableProcessors()を実行すると40が返されるため、アプリケーションは40スレッドしか生成しません。なぜそうなのですか?
1210 次
1 に答える
2
バグのある Windows 2003 を使用している場合を除きます。
...ハイパースレッディングが有効になっている場合、「40 コア」というカウントは間違った結果になります。これは、Windows が正しい論理 CPU コア数を報告するためです。
Java 修正プログラムが利用できない場合は、JNI を使用して GetLogicalProcessorInformation() Windows API 呼び出しを呼び出すことができます(ソース コードが含まれており、XP SP3 以降で動作します)。
于 2012-11-11T15:51:50.377 に答える