2013-10-15 84 views
0

假設我必須用Java讀取,處理和更新很多文件。我打算使用一臺帶有16個內核的計算機。由於我有IO綁定(讀取和更新文件)和CPU綁定(處理)任務,我分配了2個線程池。如何選擇線程池大小?

我會爲16個線程(線程數量== CPU數量)分配一個用於CPU綁定任務的池。現在我想知道IO池池大小是多少。 你會建議什麼尺寸的線程池?

+3

我會建議測試。無法打敗你知道的實際結果。 – Kayaman

+1

我想說可用的處理內核的數量... – Thihara

+0

我建議爲操作系統留下至少1個CPU,然後使用可用工具進行測試以檢查真實世界aproximation中瓶頸的位置 – RamonBoza

回答

4

這取決於您的存儲功能以及您嘗試執行哪種IO操作。例如,在硬盤上長時間順序寫入會支持單個IO線程,但是您希望按照您的要求進行擴展。

在這個回答中,https://stackoverflow.com/a/2821025/2855891,BlackAura解釋了爲什麼試驗和分析可能是你真正能找到的唯一方法。

這個話題可能已經很不錯了。