すべての論理コアのプロセスを埋めると、パフォーマンスに悪影響を及ぼしますか? [閉鎖]

すべての論理コアのプロセスを埋めると、パフォーマンスに悪影響を及ぼしますか? [閉鎖]

私のCPUには、ハイパースレッディングのため、コアあたり2つの論理プロセッサがあります。ハイパースレッディングの前提を正しく理解すると、各コアは同時に2つの別々のスレッドに別々のキャッシュとコマンドポインタを持つことができます。いいえシングルコアは2つのスレッドを同時に実行できます。したがって、基本的にスレッド交換の高いオーバーヘッドを軽減します。つまり、スレッドを実行するコアよりも多くのスレッドを実行しても、パフォーマンスに悪影響が少ないことを意味します。それでも私はそれでも欲しい一部関連するオーバーヘッドと一部たとえば、物理コアが8つしかないシステムで16のスレッドを実行すると、パフォーマンスに悪影響を及ぼす可能性があります。

私のハイパースレッディングには8つの物理コアがあるので、私のシステムで実行されるソフトウェアは私のCPUコアが16個だと思うようです。一部のビルドシステムなどの一部のソフトウェアでは、デフォルトで利用可能なすべてのコアを使用して並列化を最大化します。私が検討しているソフトウェアのパラメータを介してスレッド数を指定できることを知っています。スレッドが8つ以上であれば、パフォーマンスには役に立たないと思うのが正しいですか? 8つ以上のスレッドが実際にパフォーマンスを低下させると思うのは正しいですか?それでは、プログラムに8つ以下のスレッドを使用するように指示する必要がありますか?

ベストアンサー1

時々違うよね

通常、CPU スレッドごとに 1 つのソフトウェアスレッドを実行すると、最高のパフォーマンスが得られます。 CPUコアごとに1つのソフトウェアスレッドが10%速く実行されることがよくあります。したがって、1つのソフトウェアスレッドが100%で実行されるのではなく、2つのソフトウェアスレッドがそれぞれ55%の速度で実行されます。

しかし、私はまた、より良いランニングパフォーマンスを見ました少ない複数のコアが同じキャッシュを共有している場合は、CPUコアよりも多くのプロセスがあります。しかし、このような状況は非常にまれです。

通常、16個のCPUスレッドをすべて使用する必要がありますが、システムを確実に知る唯一の方法は測定することです。

おすすめ記事