我们在Linux集群环境中运行R.当用户无意中使用R进程占用所有内存时,头节点有几个挂起。有没有办法限制Linux下的R内存使用?我宁愿不建议全球性的ulimits,但这可能是前进的唯一途径。
答案 0 :(得分:9)
我创建了一个小型R包ulimit
,它允许使用the same mechanism为正在运行的R进程设置内存限制,ulimit -v
has no effect on OS X也用于shell中的ulimit
。目前该软件包无法在Windows上运行 - 如果您运行Windows,请使用memory.limit()
软件包中的utils
。 编辑:它也不会在"其他" POSIX平台 - planned ...
使用
从GitHub安装devtools::install_github("krlmlr/ulimit")
要将R可用的内存限制为2000 MiB,只需调用:
ulimit::memory_limit(2000)
现在:
> rep(0L, 1e9)
Error: cannot allocate vector of size 3.7 Gb
该软件包功能齐全,但处于初期阶段。对Windows的支持是{{3}},但尚未实现。非常感谢您的反馈!
答案 1 :(得分:8)
?"Memory-limits"
建议使用ulimit
或limit
。
有一个命令行标志:--max-mem-size
,可以设置初始限制。用户可以在会话期间使用memory.limit
增加此功能。