R snow可以创造的奴隶数量是否有限制?

时间:2013-05-09 12:02:02

标签: r parallel-processing snow

我正在尝试在3个不同的主机上构建一个包含大约120个进程的雪群。这些是AMD服务器,每个服务器48个核心。在建立大约前90个奴隶后,我得到了这个错误:

cl = makeSOCKcluster(c(rep("localhost", 44), rep("host2", 46), rep("host3", 45)))
Error in socketConnection(port = port, server = TRUE, blocking = TRUE,  : 
  all connections are in use
> traceback()
3: socketConnection(port = port, server = TRUE, blocking = TRUE, 
       open = "a+b")
2: newSOCKnode(names[[i]], options = options, rank = i)
1: makeSOCKcluster(c(rep("localhost", 44), rep("host2", 46), 
       rep("host3", 45)))

我检查了系统限制,但没有看到任何问题:

# cat /proc/sys/fs/file-max
12897622
# grep "#define __FD_SETSIZE" /usr/include/*.h /usr/include/*/*.h
/usr/include/linux/posix_types.h:#define __FD_SETSIZE   1024
# ulimit -a |grep open
open files                      (-n) 65536

雪可以创建的进程数量是否有限制?

1 个答案:

答案 0 :(得分:4)

是的,但仅限于R可以创建的连接总数(目前为128)。这不仅包括套接字连接,这就是为什么你只能到达~90个工作节点。

> grep "define NCONNECTIONS" *
connections.c:#define NCONNECTIONS 128 /* snow needs one per slave node */

由于您使用的是GNU / Linux,我建议使用多核而不是雪。