我们在Linux集群环境中运行R. 头节点有一些挂起时,用户无意中采取了所有的内存使用R进程。 有没有办法限制Linux下的内存使用情况? 我不想提出全球性的限制,但这可能是唯一的出路。
?"Memory-limits"
建议使用ulimit
或limit
。
有一个命令行标志:– --max-mem-size
可以设置初始限制。 这可以通过使用memory.limit
在会话期间由用户增加。
我创建了一个小的R包ulimit
,它允许使用与 shell中的ulimit
同样的机制来为运行中的R进程设置内存限制。 目前该软件包不能在Windows上运行 – 如果运行Windows,则使用utils
软件包中的memory.limit()
。 编辑 :它也不能在“其他”POSIX平台上工作 – ulimit -v
对OS X没有影响 …
从GitHub使用安装它
devtools::install_github("krlmlr/ulimit")
为了将可用的内存限制在2000Mb,只需调用:
ulimit::memory_limit(2000)
现在:
> rep(0L, 1e9) Error: cannot allocate vector of size 3.7 Gb
该软件包功能,但在一个非常早期的阶段。 Windows的支持计划,但尚未实施。 反馈是非常感谢!