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