
私は Windows 7 (x64) マシンで Hudson を実行しています。これは単に 'java -jar hudson.war' を使用して起動されます。何らかの理由で、Java プロセスは複数のスレッドを実行しているにもかかわらず、使用可能な 2 つの CPU のうち 1 つしか使用しません。明示的に別の指示がない限り (私の記憶が正しければ、SetProcessorAffinity API を使用して)、OS のデフォルトの動作は、マルチスレッド プログラムのスレッドを複数の CPU に分散することであると確信しています。
Java に複数の CPU を使用するように指示する方法はありますか?
答え1
通常、java.exe
スレッドは自動的に異なる CPU に配置されます。
そうでない場合は、プログラムが CPU バウンドではなく I/O バウンドであるか、同期のためにスレッドを同時に実行できないことが原因である可能性があります。
見るhttp://www.oracle.com/technetwork/java/hotspotfaq-138619.html#perf_scalingさらに詳しい情報については。
なぜ 1 つのプロセッサしか使用しないのかを知るには、おそらく Hudson をデバッグする必要があるでしょう。