两个进程之间的协调开销是否很大?

两个进程之间的协调开销是否很大?

我有 24 个计算密集型进程,每个进程都在单个线程中运行,每个进程运行大约 2 小时。我的是8核CPU。

如果我同时运行所有 24 个进程与仅同时运行 8 个进程相比,对总运行时间有影响吗?

我说的是进程之间的协调开销,因此在这种情况下,每个 CPU 将被分配 3 个进程 - 这个开销很大吗?

答案1

这将取决于您的具体工作负载和架构的更多细节(例如,进程是否读取相同的内存,这些内存可能位于不同的 NUMA 节点上?),因此最好您能够测量性能并查看您得到的结果。

在 8 个执行单元上运行 24 个 CPU 密集型任务将需要打开和关闭任务调度,而运行与执行单元一样多的任务原则上应该需要更少的切换。我不认为与运行代码以在任务之间切换相关的开销会那么高,但是,当从 CPU 调度任务时,一个影响是该 CPU 缓存的状态有被刷新的风险(它们很可能会变成对于正在安排的新任务毫无用处);如果这种情况经常发生,可能会导致性能下降。

就您而言,将这三者相互进行基准测试可能是有意义的:

  1. 运行24个并发任务;
  2. 运行8个任务;
  3. 运行 8 个任务,为每个任务分配特定的 CPU。

您可以在Linux 上使用eg 执行(3) cpuset

相关内容