在Linux下限制R中的内存使用量

sea*_*avi 12 linux memory-management r

我们在Linux集群环境中运行R. 当用户无意中使用R进程占用所有内存时,头节点有几个挂起.有没有办法限制Linux下的R内存使用?我宁愿不建议全球性的ulimits,但这可能是前进的唯一途径.

krl*_*mlr 10

我创建了一个小的R包,ulimit它允许使用在shell 中使用的相同机制为正在运行的R进程设置内存限制ulimit.目前该软件包在Windows上不起作用 - 如果运行Windows,memory.limit()则从utils软件包中使用.编辑:它也不适用于"其他"POSIX平台 - ulimit -v对OS X没有影响 ...

使用从GitHub安装它

devtools::install_github("krlmlr/ulimit")
Run Code Online (Sandbox Code Playgroud)

要将R可用的内存限制为2000 MiB,只需调用:

ulimit::memory_limit(2000)
Run Code Online (Sandbox Code Playgroud)

现在:

> rep(0L, 1e9)
Error: cannot allocate vector of size 3.7 Gb
Run Code Online (Sandbox Code Playgroud)

包装是功能性的,但在很早的阶段.计划支持Windows 但尚未实现.非常感谢您的反馈!

  • 正如你在GitHub上所说的那样,这只能在三个操作系统中的两个上工作,而大多数新手都在第三个上工作.值得注意的地方...... (2认同)

Jam*_*mes 8

?"Memory-limits"建议使用ulimitlimit.

有一个命令行标志:--max-mem-size可以设置初始限制.用户可以在会话期间通过使用来增加这一点memory.limit.

  • 谢谢,詹姆斯.--max-mem-size现在从R和memory.limit消失,仅适用于Windows.ulimit和limit看起来是唯一的出路. (5认同)