我有一个带有2个物理CPU的服务器,它们共有24个核心和10 GB RAM。 PHP程序正在计算一个统计信息,我可以运行每个部分完全独立于其他部分。一旦所有计算完成,我只需要“合并”它们。使用PHP pthreads运行600多个线程 - 开销如何
因此,我有想法在由“pthread”创建/控制的单独线程中执行每个计算阶段。 每个计算需要大约0,10秒,但计算量可以在序列化时花费很长时间。
我的问题:
- 创建一个新的 “主题” 和 “并行线程” 的时候有没有限制?
- 创建新线程时的开销是多少?我必须考虑这个以避免新的延迟。
我可以想象,几秒钟的负载会非常高,但是一旦每次计算完成,它会突然结束。这不是问题。这是“我的”服务器,我不必关心其他用户[或者它是共享服务器时]。
1)您的服务器。您还应该注意,如果您有24个内核,并且您的应用程序确实是计算密集型的而不是IO密集型的,那么使用24个以上的线程将不会提高您的性能。你应该把你的工作量分成24个数据包,并为每个数据包启动一个线程(如果你另外有超线程,则为48)。任何更多的线程都不会让你的CPU更快,但是由于开销,你的进程会变慢。 2)确切的数字,你只需要尝试。它很大程度上取决于硬件,软件,操作系统,[...] –
@FranzGleichmann我现在发布我的答案,并在我的测试中,您的帖子已被确认。 –