線程很閒,cpu很忙

前兩天跟一位同事討論問題。
他堅持他的線程設計,“如果一段時間內沒有工作,比如20秒內沒有請求,才讓線程進入idle狀態(wait),其它時候線程處於活躍狀態”。
這樣設計是有問題的,因爲在這個情況裏線程在工作狀態的時候也不是100%滿負荷的,而是間隙性的處理一個一個工作,所以在線程處理一個工作後就應該讓他進入wait狀態,下一個工作來了再進入活躍狀態,而不是讓線程處於一段活躍時間。會造成線程空跑,佔有cpu過高,帶來性能和功耗問題。在多核cpu上也是一樣,會佔住某個核心,這樣設計有問題。
這樣的情況用top -H -m 10就可以看到這個線程一直處在前邊。
畫了個圖說明。做線程不要太自私,佔住所有cpu時間,cpu很忙它要照顧多個線程。

clipboard.png

最後說服了他。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章