[轉]如何根據cpu的processor數來確定程式的並發線程數量

來源:互聯網
上載者:User

標籤:

原文:http://blog.csdn.net/kirayuan/article/details/6321967

我們可以在cat 裡面發現processor數量,這裡的processor可以理解為邏輯上的cpu。

這裡摘抄的一段blog來說明:

什麼是線程池大小的阻抗匹配原則? 
我在《常用模型》中提到“阻抗匹配原則”,這裡大致講一講。

如果池中線程在執行任務時,密集計算所佔的時間比重為 P (0 < P <= 1),而系統一共有 C 個 CPU,為了讓這 C 個 CPU 跑滿而又不過載,線程池大小的經驗公式 T = C/P。(T 是個 hint,考慮到 P 值的估計不是很準確,T 的最佳值可以上下浮動 50%。)

以後我再講這個經驗公式是怎麼來的,先驗證邊界條件的正確性。

假設 C = 8, P = 1.0,線程池的任務完全是密集計算,那麼 T = 8。只要 8 個活動線程就能讓 8 個 CPU 飽和,再多也沒用,因為 CPU 資源已經耗光了。

假設 C = 8, P = 0.5,線程池的任務有一半是計算,有一半等在 IO 上,那麼 T = 16。考慮作業系統能靈活合理地調度 sleeping/writing/running 線程,那麼大概 16 個“50% 繁忙的線程”能讓 8 個 CPU 忙碌個不停。啟動更多的線程並不能提高輸送量,反而因為增加環境切換的開銷而降低效能。

如果 P < 0.2,這個公式就不適用了,T 可以取一個固定值,比如 5*C。

另外,公式裡的 C 不一定是 CPU 總數,可以是“分配給這項任務的 CPU 數目”,比如在 8 核機器上分出 4 個核來做一項任務,那麼 C=4。

[轉]如何根據cpu的processor數來確定程式的並發線程數量

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.