我们在 linux 集群环境中运行 R。当用户无意中使用 R 进程占用了所有内存时,头节点有几次挂起。有没有办法限制linux下的R内存使用?我宁愿不建议使用全局 ulimit,但这可能是唯一的出路。
问问题
19732 次
2 回答
13
unix::rlimit_as()
允许使用在 shell中也使用的相同机制为正在运行的 R 进程设置内存限制。不支持ulimit
Windows 和macOS 。
在我的.Rprofile
我有
unix::rlimit_as(1e12, 1e12)
将内存使用限制为 ~12 GB。
在那之前...
ulimit
我创建了一个具有类似功能的小型 R 包。
使用从 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
于 2014-06-29T10:44:44.400 回答
8
?"Memory-limits"
建议使用ulimit
or limit
。
有一个命令行标志:--max-mem-size
可以设置初始限制。这可以由用户在会话期间通过使用来增加memory.limit
。
于 2012-09-25T12:53:29.310 回答