使用最大远程服务器

时间:2013-05-02 21:42:54

标签: parallel-processing gnu-parallel

我试图将命令分发给100台远程计算机,但发现这些命令只发送给16台远程计算机。我的本地机器有16个核心。为什么并行只使用16台远程计算机而不是100?

parallel --eta --sshloginfile list_of_100_remote_computers.txt< list_of_commands.txt

2 个答案:

答案 0 :(得分:0)

我相信您需要指定要执行的并行作业数。

根据Parallel MAN

  

- 工作N

     

-j N

     

- max-procs N

     

-P N

     

工作岗位数量。并行运行最多N个作业。 0意味着尽可能多。默认值为100%,每个CPU核心运行一个作业。

记住这一点:

  

使用-j选项启动多个作业时,这是合理的   假设每个工作可能不会花费完全相同的时间   去完成。如果您关心按顺序查看输出   文件名被呈现给Parallel(而不是它们   完成),使用--keeporder选项。

Parallel Multicore at the Command Line with GNU Parallel,行政杂志

答案 1 :(得分:0)

如果远程计算机是32个核心,则运行16 * 32个作业。默认情况下,GNU Parallel使用STDOUT和STDERR的文件句柄,总共16 * 32 * 2个文件句柄= 1024个文件句柄。

如果你有一个默认的GNU / Linux系统,你将达到1024文件句柄限制。

如果--ungroup运行更多作业,那么这清楚表明您已达到文件句柄限制。使用ulimit -n来增加限额。