2017-04-19 88 views
-1

我閱讀點燃文檔,現在我在the section about performance。下面是它的書面(強調我的):配置線程池來減少上下文切換

默認情況下,點燃有它設置爲2倍 可用的CPU數主線程池的大小。在大多數情況下,保持2個線程每個核心將 導致更快的應用程序的性能,因爲會減少 上下文切換和CPU高速緩存會更好地工作。

我不明白爲什麼它少了上下文切換,如果我們每個核心有2個線程?我認爲如果所有線程都忙於某個工作,那麼會有很多上下文切換,因爲我們無法像核心數量那樣運行兩次作業。這會損害表現。

這是什麼意思?

+0

也許他們在虛擬CPU核心和超線程算什麼? –

+0

*這是什麼意思?*沒有更多的上下文,這是不可能的。 –

+0

@AndrewHenle但這是它在文檔中的內容。 –

回答

0

答案是語句的解釋 - 因此承擔什麼樣的作家可能會想,並提供我的觀點。

如果我們假定每個內核都是超線程的,那麼該語句可能是正確的,每個線程最大化CPU使用時間,並且線程保持綁定到CPU內核。

或者

核心是單線程並且每個線程的通過最小化上下文切換的

的數目(當一個被阻塞,另一個則計算)對於高速緩存相關提及最大化的可用CPU時間的使用情況保持真實的進程線程必須在相當長的一段時間內保持綁定到相同的核心。


爲什麼線程的權數是超過數以很好的例子線程的重要一個很好的想法是在這裏:https://blogs.mulesoft.com/biz/news/chasing-the-bottleneck-true-story-about-fighting-thread-contention-in-your-code/

除此之外,什麼是在處理器級別的上下文切換開銷: 雖然日 - 給好主意 - http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html

+3

*猜測不是答案,它們是猜測*,請在嘗試回答更多問題之前閱讀[如何寫出一個好答案?](http://stackoverflow.com/help/how-to-answer)。 –