通常我們設定程式執行緒池的時候都會想,怎麼設定這個引數好?太大了支撐不起,太小了浪費資源,怎麼樣最大化利用執行緒數?
如果一台伺服器上只部署這乙個應用並且只有這乙個執行緒池,那麼這種估算或許合理,具體還需自行測試驗證。
但是,io優化中,這樣的估算公式可能更適合:
最佳執行緒數目 = ((執行緒等待時間+執行緒cpu時間)/執行緒cpu時間 )* cpu數目
因為很顯然,執行緒等待時間所佔比例越高,需要越多執行緒。執行緒cpu時間所佔比例越高,需要越少執行緒。
下面舉個例子:
假設平均每個執行緒cpu執行時間為0.5s,而執行緒等待時間(非cpu執行時間,比如io)為1.5s,cpu核心數為4,那麼根據上面這個公式估算得到:((0.5+1.5)/0.5)*4=16。這個公式進一步轉化為:
最佳執行緒數目= (執行緒等待時間與執行緒cpu時間之比 + 1)* cpu數目
剛剛說到的執行緒池大小的經驗值,其實是這種公式的一種估算值。
執行緒數設定和CPU數的關係
我是搬運工,以下答案均來自於併發程式設計網 如何合理地估算執行緒池大小?我只是部分整理了一下。一般說來,大家認為執行緒池的大小經驗值應該這樣設定 其中n為cpu的個數 如果一台伺服器上只部署這乙個應用並且只有這乙個執行緒池,那麼這種估算或許合理,具體還需自行測試驗證。但是,io優化中,這樣的估算公式...
執行緒數設定技巧 與CPU的關係
1 簡化設定 一般說來,執行緒池的大小可以這樣設定 1 如果是cpu密集型應用,則執行緒池大小設定為n 1 2 如果是io密集型應用,則執行緒池大小設定為2n 1 因為io讀資料或者快取的時候,執行緒等待,此時如果多開執行緒,能有效提高cpu利用率 其中n為cpu的個數 如果一台伺服器上只部署這乙個...
CPU 核數和執行緒數的關係
cpu 處理器。核心數cpu的大腦數量。核心數就跟人的大腦一樣,比如說,核心數2就說明cpu有兩個腦子,腦子越多解決問題的速度越快。cpu的核心數越高,處理速度就越高。核心數2通俗地說就是雙核cpu。執行緒數乙個核心就是乙個物理執行緒,核心數2就有兩個物理執行緒。但是,因特爾的超執行緒技術可以把乙個...