如何最佳地管理多个进程的运行?

如何最佳地管理多个进程的运行?

我的电脑有 6 个核心。我必须运行 12 个进程。每个进程正好需要 10 分钟。

我想考虑(仅仅为了论证)两种情况:

  1. 我在每个核心上连续运行 2 个进程。应该需要 20 分钟才能完成。

  2. 我打开了 12 个终端窗口,并独立运行所有 12 个进程。因此,每个核心都需要在不同的进程之间来回切换,让我们感觉这 12 个进程是并行的。

问题

这有关系吗?这有很大区别吗?

我的基本想法

我预计第二种解决方案会花费更多时间,因为内核需要一些时间来回切换不同的进程。但是,与此同时,计算机上还有许多其他小进程在运行,例如由 root 运行。我预计第二种方案会花费更多时间,但那几乎可以忽略不计。我尝试了一下,没有注意到任何差异,但我的进程可能太短了,无法注意到任何事情。

答案1

差异可能微不足道。选项 1可以由于更少的 CPU 上下文切换而速度更快,但其他因素也会发挥作用。

正如你自己所观察到的,问题在于你的操作系统已经有数百个线程同时运行,因此 CPU 无论如何都会进行上下文切换。这可能使得选项 1 并不比选项 2 更好。

然而如果你的流程正在利用某种共享资源,例如 CPU 缓存、RAM、HDD、网络,您可能会发现这些资源的并发使用(或上下文切换)会产生巨大的差异。在这种情况下,连续执行可能会有很大帮助。

最后,测试两者并选择最适合您的方法:-)

相关内容