Multithreading Scala:corePoolSize最大化演员表现
我正在尝试基于经典的工作池模型制作一个Scala应用服务器。 鉴于:Multithreading Scala:corePoolSize最大化演员表现,multithreading,scala,actor,Multithreading,Scala,Actor,我正在尝试基于经典的工作池模型制作一个Scala应用服务器。 鉴于: 这台机器有一个四核处理器 有一个调度程序参与者,专门阻止网络I/O侦听 工人演员都是非阻塞的 corePoolSize最大化性能的最佳价值是什么? 理想情况下,当工作线程池的大小等于处理器内核的数量时,性能会最大化。 因此,在本例中,我猜最佳值应该是5(调度程序为1,工作程序为4),或者我可以将该值设置为4,并覆盖调度程序参与者的调度程序方法,以便它不会与工作程序共享线程池 这是正确的吗?谢谢你的建议。 谢谢 只是一些提示 理
N = C * U * (1 + W/C)
其中N=线程数
,C=CPU内核数
,U=目标CPU利用率
,W/C=等待时间与计算时间之比
(等待时间指IO等)
但是请注意,上面的等式只考虑CPU,CPU不是唯一需要管理的资源。调整响应时间也会有点不同
老生常谈的答案是,你必须进行测试,看看什么是最好的选择。您可能可以使用上述公式作为起点。还要注意核心池大小!=最大池大小 谢谢你的回答,Zwei。这有帮助。:)