gpt4 book ai didi

multithreading - Scala:corePoolSize 最大化 Actor 性能

转载 作者:行者123 更新时间:2023-12-03 22:43:06 25 4
gpt4 key购买 nike

我正在尝试制作一个基于经典工作池模型的 Scala 应用服务器。鉴于:

  1. 机器有一个四核处理器
  2. 有一个专门用于阻塞网络 I/O 监听的调度器 actor
  3. worker actor 都是非阻塞的。

要最大化性能,corePoolSize 的最佳值是多少?理想情况下,当工作线程池的大小等于处理器内核的数量时,性能会最大化。所以在这种情况下,我猜最好的值是 5(1 用于调度程序,另外 4 用于工作人员),或者我可以将值设置为 4 并覆盖调度程序 actor 的调度程序方法,这样它就不会与工作人员共享线程池。

这是正确的吗?任何建议表示赞赏。谢谢!

最佳答案

只是一些提示。

Ideally the performance is maximized when the size of the worker thread pool is equal to the number of processor cores.

不是真的。以下是如何估算可以获得最大吞吐量的线程数:

N = C * U * (1 + W/C) 

其中 N = 线程数C = CPU 核心数U = objective-c PU 利用率W/C = Waiting time to Computing time ratio(等待时间是指IO等)。

但请注意,上述等式仅考虑了 CPU,而 CPU 并不是唯一需要管理的资源。响应时间的调整也有点不同。

陈词滥调的答案是,您必须进行测试才能确定最佳选择。您或许可以使用上述公式作为起点。另请注意,核心池大小 != 最大池大小。

关于multithreading - Scala:corePoolSize 最大化 Actor 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11007103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com