Краткая версия
Есть ли способ предотвратить использование R из любой виртуальной памяти на Unix-машине? Всякий раз, когда это происходит, это происходит из-за того, что я прищурился, и тогда я хочу прекратить вычисление.
Более длинная версия
Я работаю с большими наборами данных на мощном компьютере, совместно используемом несколькими другими людьми. Иногда я запускаю команды, для которых требуется больше оперативной памяти, чем доступно, что заставляет R начинать замену и, в конечном итоге, замораживать всю машину. Обычно я могу решить это, установив ulimit
в мой ~/.bashrc
ulimit -m 33554432 -v 33554432 # 32 GB RAM of the total 64 GB
который заставляет R выкидывать ошибку и прерывать при попытке выделить больше памяти, чем доступно. Однако, если я ошибаюсь в этом роде при распараллеливании (обычно с использованием пакета snow
), ulimit
не имеет никакого эффекта, и машина все равно сработает. Я думаю, это потому, что snow
запускает рабочих как отдельные процессы, которые не запускаются в bash. Если я вместо этого попытаюсь установить ulimit
в моем ~/.Rprofile
, я просто получаю сообщение об ошибке:
> system("ulimit -m 33554432 -v 33554432")
ulimit: 1: too many arguments
Может ли кто-нибудь помочь мне выяснить способ сделать это?
Боковая дорожка
Почему я не могу установить ulimit
из 0 виртуальной памяти в bash
?
$ ulimit -m 33554432 -v 0
Если я это сделаю, он быстро выключится.