1. 程式人生 > >執行緒數設定技巧——與CPU的關係

執行緒數設定技巧——與CPU的關係

1、簡化設定

一般說來,執行緒池的大小可以這樣設定:

1、如果是CPU密集型應用,則執行緒池大小設定為N+1
2、如果是IO密集型應用,則執行緒池大小設定為2N+1(因為io讀資料或者快取的時候,執行緒等待,此時如果多開執行緒,能有效提高cpu利用率)
(其中N為CPU的個數)

如果一臺伺服器上只部署這一個應用並且只有這一個執行緒池,那麼這種估算或許合理,具體還需自行測試驗證。

2、對IO優化有更高要求

可參考如下估算公式

最佳執行緒數目 = ((執行緒等待時間+執行緒CPU時間)/執行緒CPU時間 )* CPU數目

因為很顯然,執行緒等待時間所佔比例越高,需要越多執行緒。執行緒CPU時間所佔比例越高,需要越少執行緒。

舉個例子:

比如平均每個執行緒CPU執行時間為0.5s,而執行緒等待時間(非CPU執行時間,比如IO)為1.5s,CPU核心數為8,那麼根據上面這個公式估算得到:((0.5+1.5)/0.5)*8=32。

這個公式進一步轉化為:

最佳執行緒數目 = (執行緒等待時間與執行緒CPU時間之比 + 1)* CPU數目

參考:
執行緒數設定和CPU數的關係