Ограничение использования памяти в R под linux

Мы запускаем R в среде linux-кластера. У головки node было несколько зависаний, когда пользователь случайно захватил всю память с помощью процесса R. Есть ли способ ограничить использование памяти R в Linux? Я бы предпочел не предлагать глобальные ulimits, но это может быть единственный путь вперед.

Ответ 1

?"Memory-limits" предлагает использовать ulimit или limit.

Существует флаг командной строки: --max-mem-size, который может установить начальный предел. Это может быть увеличено пользователем во время сеанса с помощью memory.limit.

Ответ 2

Я создал небольшой пакет R, ulimit, который позволяет установить пределы памяти для выполняемого процесса R, используя тот же механизм, который также используется для ulimit в оболочке. В настоящее время пакет не работает в Windows - используйте memory.limit() из пакета utils, если вы запустите Windows. EDIT: он также не работает на "другой" платформе POSIX - ulimit -v не влияет на OS X...

Установите его из 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 запланирована, но пока не реализована. Обратная связь очень ценится!