寫給程序員的軟件測試指南:人人都可以開發(fā)無Bug代碼
942
2025-03-31
線程池需要設(shè)置合適的大小,假如設(shè)置的太大,線程上線文切換過于頻繁,造成大量資源開銷,反而會使性能降低。假如設(shè)置的太小,存在很多可用的處理器資源卻未在工作,會造成資源的浪費和對吞吐量造成損失。
為了充分利用處理器資源,創(chuàng)建的線程數(shù)至少要等于處理器核心數(shù)。如果所有的任務(wù)都是計算密集型的,那么線程數(shù)等于可用的處理器核心數(shù)就可以了。不過,如果所有的任務(wù)都是IO密集型,那么處理器大部分時間是空閑的,所有要適當?shù)脑黾泳€程數(shù)。線程等待時間所占比例越高,需要越多線程。線程運算時間所占比例越高,需要越少線程。 于是可以使用下面的公式進行估算:
最佳線程數(shù) = (1 + 線程等待時間/線程計算時間)* 目標CPU的使用率 * 處理器核心數(shù)
例如:平均每個線程計算運行時間為0.5s,而線程等待時間(非計算時間,比如IO)為1.5s,目標CPU的使用率是90%,CPU核心數(shù)為8,那么根據(jù)上面這個公式估算得到:(1 + 1.5/0.5) * 90% * 8 = 28.8。
即使有上面的簡單估算方法,也許看似合理,但實際上也未必合理,都需要結(jié)合系統(tǒng)真實情況(比如是IO密集型或者是CPU密集型或者是純內(nèi)存操作)和硬件環(huán)境(CPU、內(nèi)存、硬盤讀寫速度、網(wǎng)絡(luò)狀況等)來不斷嘗試達到一個符合實際的合理估算值,也可以嘗試Dark Magic的估算方法。
任務(wù)調(diào)度
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。