我可以执行:
parallel -j 200 < list0
“list”的位置:
nice -n -20 parallel -j 100 < list2
nice -n -20 parallel -j 100 < list1
这可行/可行吗?
答案 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毫秒开销可能比实际运行作业更多),也可以使用它。