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數的關係
執行緒數設定和CPU數的關係
我是搬運工,以下答案均來自於併發程式設計網 如何合理地估算執行緒池大小?我只是部分整理了一下。一般說來,大家認為執行緒池的大小經驗值應該這樣設定 其中n為cpu的個數 如果一台伺服器上只部署這乙個應用並且只有這乙個執行緒池,那麼這種估算或許合理,具體還需自行測試驗證。但是,io優化中,這樣的估算公式...
CPU 核數和執行緒數的關係
cpu 處理器。核心數cpu的大腦數量。核心數就跟人的大腦一樣,比如說,核心數2就說明cpu有兩個腦子,腦子越多解決問題的速度越快。cpu的核心數越高,處理速度就越高。核心數2通俗地說就是雙核cpu。執行緒數乙個核心就是乙個物理執行緒,核心數2就有兩個物理執行緒。但是,因特爾的超執行緒技術可以把乙個...
CPU核心數和執行緒數的關係
多核心 也指單晶元多處理器 chip multiprocessors,簡稱cmp cmp是由美國史丹福大學提出的,其思想是將大規模並行處理器中的smp 對稱多處理器 整合到同一晶元內,各個處理器並行執行不同的程序。這種依靠多個cpu同時並行地執行程式是實現超高速計算的乙個重要方向,稱為並行處理 多執...