Cpu

填充所有邏輯核心的程序是否會對性能產生負面影響?

  • August 14, 2020

由於超執行緒,我的 CPU 每個核心有 2 個邏輯處理器。如果我正確理解超執行緒的前提,它允許每個核心同時為 2 個單獨的執行緒擁有一個單獨的記憶體和指令指針,但不允許單個核心同時執行 2 個執行緒。因此,它基本上只是減輕了執行緒交換的高成本,這意味著減少了執行執行緒多於執行它們的核心所產生的負面性能影響。但是,我仍然預計會涉及一些成本,並且在執行時會產生一些負面的性能影響,例如,在只有 8 個物理核心的系統上執行 16 個執行緒。

由於我的超執行緒具有 8 個物理核心,因此在我的系統中執行的軟體似乎認為我有 16 個 CPU 核心。有一些軟體,例如某些建構系統,預設使用所有可用核心以最大化並行化。我知道我可以通過我正在考慮的軟體的參數來指定執行緒數。我認為超過 8 個執行緒對性能沒有好處是正確的嗎?我是否認為超過 8 個執行緒實際上會阻礙性能?因此,我是否應該指示程序使用不超過 8 個執行緒?

這取決於。

一般來說,每個 CPU 執行緒執行一個軟體執行緒將提供最佳性能。我經常看到每個 CPU 核心執行一個軟體執行緒的速度提高了 10% - 因此,我沒有讓一個軟體執行緒以 100% 執行,而是有兩個軟體執行緒,每個執行緒以 55% 執行。

但是,如果多個核心共享相同的記憶體,我也看到比 CPU 核心執行*更少的程序的性能更好。*然而,這種情況非常罕見。

通常,您應該使用所有 16 個 CPU 執行緒,但在您的系統上確定的唯一方法是測量。

引用自:https://unix.stackexchange.com/questions/604419