【发布时间】:2016-03-15 21:38:40
【问题描述】:
我有一个带有 2 个物理 CPU 的服务器,它们共有 24 个内核和 10 GB RAM。 PHP 程序正在计算一个统计数据,我可以完全独立地运行每个部分。所有计算完成后,我只需“合并”它们。
因此,我产生了在由“pthread”创建/控制的单独线程中执行每个计算阶段的想法。 每个计算大约需要 0.10 秒,但计算量让它们在序列化时需要很长时间。
我的问题:
- 使用“pthreads”创建新“线程”时是否有限制?
- 创建新线程时的开销是多少?我必须考虑这一点以避免新的延误。
我可以想象,在几秒钟内,负载会非常高,但是一旦每次计算完成,它就会突然结束。这不是问题。它是“我的”服务器,我不必关心其他用户[或当它是共享服务器时]。
【问题讨论】:
-
1) 你的服务器。您还应该注意,如果您有 24 个内核并且您的应用程序确实是计算密集型而不是 IO 密集型,则使用超过 24 个线程不会提高您的性能。您应该将您的工作负载划分为 24 个数据包,并为每个数据包启动一个线程(或 48 个,如果您还有超线程)。更多的线程不会让你的 CPU 更快,但你的进程会因为开销而变慢。 2)对于确切的数字,您只需尝试即可。它在很大程度上取决于硬件、软件、操作系统、[...]
-
@FranzGleichmann 我现在发布了我的答案,在我的测试中,您的帖子已得到确认。
标签: php multithreading pthreads