私はJava の fork-join フレームワークを使用して、CPU を集中的に使用する計算を処理しています。
「シーケンシャルしきい値」(サブタスクを作成するか、作業を実行するかを決定するために使用)を少し調整しましたが、残念なことに、シングルスレッドから 4 + 4 コアに移行しても、全体的なパフォーマンスは約 2 倍になります。プールは 8 個の CPU を報告し、手動で 2、3、4 を設定すると、パフォーマンスが徐々に向上しますが、それでもシングル スレッド スループット全体の約 2 倍に達します。また、Linux システム アクティビティ モニタは、その Java プロセスの約 50% を維持します。
また、非常に疑わしいのは、複数の Java プロセスを開始すると、全体のスループットがより一致し (単一のスレッドよりもほぼ 4 倍高速)、システム アクティビティ モニターの CPU 使用率が高くなるという事実です。
Java、Linux、または fork/join フレームワークのいずれかに、CPU のフル使用を禁止する制限がある可能性はありますか? 提案や同様の経験はありますか?
注意。これは、Linux Mint ボックスで Oracle Java 7r13 を実行する、4 つのコアと 4 つのハイパースレッド コアを備えた Intel 3770 CPU 上にあります。