我知道创建多个进程可能没有任何好处,具体取决于您的处理器有多少内核(如果任务受CPU限制),或者取决于您可以同时执行多少IO操作(如果您的任务是IO-界)。在这种情况下,创建太多进程根本没有效果。
但是,创建太多进程会对性能产生否定影响吗?如果是,为什么?
答案 0 :(得分:1)
简答:是的。
一个不活跃的进程在内存和CPU时间上有一些开销 - 不是很多,但不是没有。因此,如果您有大量的流程,您将看到负面消息。
在现代系统中,同一个可执行文件的多个进程将共享代码和只读数据,但每个进程都需要自己的可变数据副本,每个都需要自己的堆栈等。因此,每个额外的进程占用一些数量记忆;这意味着更多的缓存压力,在极端情况下,更多的交换文件活动或彻底耗尽内存。也可能存在对进程数量的硬性限制。
操作系统进程调度程序将通过更长的进程列表进行更多的开销(尽管这可能赢得线性错误;如果基于堆,它可能是O(log n) )。
缓存压力可能是实践中的最大因素。假设您的流程都在处理类似的工作负载。处理时需要的一些数据将在多个工作单元之间共享,而在编译时则不知道;每个过程最终都会拥有自己的数据副本。因此,由两个进程处理的两个工作单元将占用该类数据的两倍的缓存空间。