工作執行緒數究竟要設定為多少 | 架構師之路
總結:
1. 對於cpu密集型任務,即這種任務消耗的主要是cpu資源,那麼就可以設定為cpu的核心數 +
1,多出來的1是為了防止比如某個執行緒暫停時,cpu就會空閒出來,這樣多出來的乙個執行緒就可以充分利用這個空閒時間了。
2. 對於io密集型任務,即這種任務大部分時間是用來處理io互動的,而執行緒在處理io互動時不會占用cpu來處理,
這是就可以把cpu讓給其他執行緒使用,因此執行緒數就可以設定為2倍的cpu的核心數 +
1。(io互動為什麼不會占用cpu,
是因為在進行io操作的時候,將任務交給了dma處理,cpu就不管了,處理完成之後會通過中斷通知cpu處理完畢,
因此io互動不會占用cpu資源)
3. 正常不會遇到以上兩種極端,所以有個公式:
執行緒數 =
n(cpu核數)*(
1+wt(執行緒等待時間)/st
(cpu處理時間))=
n(cpu核數)
*(st + wt)
/st
執行緒數究竟設多少合適
2018年08月06日 11 32 53 小無相功 一 需求 web server通常有個配置,最大工作執行緒數,後端服務一般也有個配置,工作執行緒池的執行緒數量,這個執行緒數的配置不同的業務架構師有不同的經驗值,有些業務設定為cpu核數的2倍,有些業務設定為cpu核數的8倍,有些業務設定為cpu核...
執行緒池設定 如何合理設定執行緒池的核心執行緒數?
當執行緒池的核心執行緒數量過大或者過小有沒影響?如何合理地設定執行緒池的核心執行緒的數量?這個是在日常開發中程式設計師在使用執行緒池時經常需要考慮的問題,下面具體介紹下。1 當執行緒池的核心執行緒數量過大或者過小的影響 當執行緒池中核心執行緒數量過大時,執行緒與執行緒之間會爭取cpu資源,這樣就會導...
執行緒數設定和CPU數的關係
我是搬運工,以下答案均來自於併發程式設計網 如何合理地估算執行緒池大小?我只是部分整理了一下。一般說來,大家認為執行緒池的大小經驗值應該這樣設定 其中n為cpu的個數 如果一台伺服器上只部署這乙個應用並且只有這乙個執行緒池,那麼這種估算或許合理,具體還需自行測試驗證。但是,io優化中,這樣的估算公式...