我正在尝试基于经典的员工池模型来构建Scala应用服务器。鉴于此:
这个机器有一个四核的processor
corePoolSize最大限度地提高性能的最佳价值是什么?理想情况下,当工作线程池的大小等于处理器核数时,性能就会最大化。因此,在这种情况下,我想最好的值是5(调度器为1,工作人员为其他4),或者我可以将值设置为4,并覆盖调度程序的调度器方法,这样它就不会与工作人员共享线程池。
这是正确的吗?任何建议都很感激。谢谢!
发布于 2012-06-13 06:44:58
只是一些暗示。
在理想情况下,当工作线程池的大小等于处理器核数时,性能就会最大化。
不怎么有意思。下面是如何估计可以获得最大吞吐量的线程数:
N = C * U * (1 + W/C)
其中N = number of threads
、C = number of CPU cores
、U = target CPU utilization rate
、W/C = Waiting time to Computing time ratio
(等待时间表示IO等)。
但是请注意,上面的公式只考虑CPU,而CPU并不是唯一需要管理的资源。为响应时间进行调优也是一件有点不同的事情。
陈词滥调的回答是,你必须进行测试,看看什么不是最好的选择。您可能可以使用上面的公式作为起点。还请注意核心池大小!=最大池大小。
https://stackoverflow.com/questions/11007103
复制相似问题