GNU Parallel可以执行更多并行进程吗?

时间:2014-04-10 05:29:05

标签: bash parallel-processing gnu-parallel

我可以执行:

parallel -j 200 < list0

“list”的位置:

nice -n -20 parallel -j 100 < list2 nice -n -20 parallel -j 100 < list1

这可行/可行吗?

2 个答案:

答案 0 :(得分:0)

进程数量有限。在实践中,不要并行运行超过几十个进程(至少在个人计算机上;在数百万美元的机器上,限制肯定更大)。

阅读fork(2)execve(2)setrlimit(2)手册页,了解它们何时以及如何失败。

在达到fork失败的限制之前,你将达到一个阈值,在这个阈值中,执行更多并行处理将会减慢整个计算,因为内部scheduler内核会受到过度压力。

如果您可以访问计算机网络(可能只有两个),请同时考虑MPI。如果您可以重新编写某些应用程序,请阅读pthreads(例如this tutorial)。

答案 1 :(得分:0)

您通常会这样做:

parallel -j0 < joblist

然后GNU Parallel将尽可能多地启动任务。它通常会受到文件句柄或进程的限制。

如果你不能覆盖每个进程的文件句柄数量,你可以经常作弊:

parallel -j10 --pipe parallel -j0 < joblist

这将开始10倍的工作。如果作业的运行时间小于10毫秒(在这种情况下,GNU Parallel的2-3毫秒开销可能比实际运行作业更多),也可以使用它。