題 從單核升級到雙核 - 吞吐量是否會翻倍?


如果我用雙核處理器替換單核處理器,它會將吞吐量提高兩倍嗎?如果否,為什麼吞吐量不會增加一倍?


4
2018-06-17 18:38


起源




答案:


絕對不會增加兩倍;這將是吞吐量的完全有效增加。這是不可能的,因為總有一些開銷。您獲得多少收益取決於幾個因素:

  • 如果您在其上運行的操作系統或程序沒有配備在不同核心上安排進程,則它可能根本不會增加。

  • 如果您正在執行的任務不是很可並行化(例如,它們嚴重依賴於I / O或其他緩慢的非CPU操作),它可能只會增加一點點。

  • 如果任務“令人尷尬地並行”,例如長期相同的浮點計算或素數因子分解,它可能會增加很多。

  • 它可能會成功 更差 如果由於進程之間的依賴關係而導致上下文切換太多,或者您需要跨進程同步事物。


9
2018-06-17 18:40





看到 http://en.wikipedia.org/wiki/Amdahl%27s_law 為了更好地描述為什麼它不會使您的吞吐量翻倍,以及如何分析實際改進的內容。


5
2018-06-17 19:18



嘿詹姆斯,非常好的鏈接! - Karthik Balaguru
@James +1學習新東西。我聽說過用於描述這個問題的“收益遞減法則”,但“Amdahl定律”對我來說是新的。謝謝你。 - Evan Plaice


如果編寫代碼以利用兩個處理器,那麼吞吐量只會更好。通常,您需要確保代碼使用2個或更多執行線程來執行作業。

只有在某些情況下,您才會看到性能實際上翻了一倍,因為需要一些簿記才能運行多個線程。


0
2018-06-17 18:40





僅適用於受CPU限制的事物。內存帶寬或I / O限制的東西可能根本沒有改進。


0
2018-06-17 18:40





這取決於您運行的代碼類型。如果您受計算限制並且您的代碼使用線程,那麼您可能會看到吞吐量提高2倍(以相同的時鐘速度)。如果您是內存I / O綁定或單線程,那麼您可能看不到任何改進(甚至性能下降)。


0
2018-06-17 18:41