寫給大忙人看的如何優雅設定執行緒池的大小

2021-09-29 00:12:08 字數 578 閱讀 9178

執行緒池需要設定合適的大小,假如設定的太大,執行緒上線文切換過於頻繁,造成大量資源開銷,反而會使效能降低。假如設定的太小,存在很多可用的處理器資源卻未在工作,會造成資源的浪費和對吞吐量造成損失。

為了充分利用處理器資源,建立的執行緒數至少要等於處理器核心數。如果所有的任務都是計算密集型的,那麼執行緒數等於可用的處理器核心數就可以了。不過,如果所有的任務都是io密集型,那麼處理器大部分時間是空閒的,所有要適當的增加執行緒數。執行緒等待時間所佔比例越高,需要越多執行緒。執行緒運算時間所佔比例越高,需要越少執行緒。於是可以使用下面的公式進行估算:

例如:平均每個執行緒計算執行時間為0.5s,而執行緒等待時間(非計算時間,比如io)為1.5s,目標cpu的使用率是90%,cpu核心數為8,那麼根據上面這個公式估算得到:(1 + 1.5/0.5) * 90% * 8 = 28.8。

即使有上面的簡單估算方法,也許看似合理,但實際上也未必合理,都需要結合系統真實情況(比如是io密集型或者是cpu密集型或者是純記憶體操作)和硬體環境(cpu、記憶體、硬碟讀寫速度、網路狀況等)來不斷嘗試達到乙個符合實際的合理估算值,也可以嘗試dark magic的估算方法

寫給大忙人看的Go語言

寫給大忙人看的golang教程 一 閱讀本文之前,我認為你已經掌握其他語言基礎並寫出乙個簡單的專案。15.1 順序控制 略 15.2 分支控制 15.3 迴圈控制 設定隨機數的種子為當前的系統時間 rand.seed time.now unix 生成0 99範圍的隨機數 randomnumber r...

寫給大忙人的模電複習資料(002)

對於rc低通電路而言,fh 12 r cf frac fh 2 rc1 對於rc高通電路而言,fl 單極性器件 載流子只有一種 空穴或者自由電子 工作電流 半導體中多子的漂移 一般我們都是考慮共源極n溝道的增強型mos管,其輸出特性曲線如下 這要與npn三極體的共射極輸出特性曲線相區別,如下圖所示 ...

寫給大忙人看的工作中的知識 錕斤拷問題

乙 嗨,你幫我個忙,今天領導說要我處理這個 可我看不懂這是啥玩意,你幫我瞧瞧。甲 哦,這是亂碼。乙 為什麼會出現亂碼呢?甲 說來話可長了 乙 快說!快說!甲 美國人發明電腦時,需要儲存字元,所以使用了乙個數字乙個字元的方法,有128個字元。乙 太少了。甲 嗯。確實少。它只有7個位元,當時有個1mb記...