K J*_*K J 2 multithreading scala actor
我正在尝试基于经典工作池模型创建一个Scala应用程序服务器.鉴于:
corePoolSize最大化性能的最佳价值是什么?理想情况下,当工作线程池的大小等于处理器核心数时,性能最大化.所以在这种情况下,我猜最好的值是5(调度程序为1,工作程序为4),或者我可以将值设置为4并覆盖调度程序actor的调度程序方法,这样它就不会与工作人员共享线程池.
它是否正确?任何建议表示赞赏 谢谢!
只是一些提示.
理想情况下,当工作线程池的大小等于处理器核心数时,性能最大化.
并不是的.以下是如何估计可以获得最大吞吐量的线程数:
N = C * U * (1 + W/C)
Run Code Online (Sandbox Code Playgroud)
其中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不是唯一要管理的资源.调整响应时间也会有点不同.
陈词滥调的答案是你必须进行测试才能看到最好的选择.你可以使用上面的公式作为起点.另请注意,核心池大小!=最大池大小.