はじめに:
私は現在、マルチスレッドプログラムを使用してシーケンシャルプログラムをベンチマークするソフトウェアに取り組んでいます。私のハードウェアには 24 個のコアがあり、RAM は 16GB あります。私のプログラムは Java で書かれていますが、プロットが必要なため MATLAB から実行されます。MATLAB を開くと、次のメッセージが表示されます。
Picked up JAVA_TOOL:OPTIONS: -XX:parallelGCThreads = 8 - Xmx8g -Dsun.java2d.pmoffscreen = false
仮説
ここで、アムダールの法則に従って、最大のパフォーマンス向上は 1/(B-(1-B)/P) として定義されます。ここで、B は順次部分、P はプロセッサの数です。私の場合、B = 0.01、(1-B = .99)、P = 24 です。これにより、理論上の最大パフォーマンスが約 20 向上します。
今、私が理解parallelGCThreads
しているように、これは利用可能なガベージ コレクター スレッドの最大数です。私のプログラムで集中的なテストを行った後、私が達成できた比率の最大増加は 7.5 倍であり、理論上の 20 にはほど遠いようです。ただし、P = 8 に置き換えると、理論上の限界は次のようになります。これは、私のプログラムで取得したものに非常に近いものです。
質問
parallelGCThreads
アムダールの法則が P = 24 ではなく P = 8 で使用されるように、実際にスレッドの量を制限しますか?
前もって感謝します!