2013-10-15 85 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解释了为什么试验和分析可能是你真正能找到的唯一方法。

这个话题可能已经很不错了。