Я использую свой компьютер для научного программирования. У этого есть здоровое 8GB ОЗУ и 12GB пространства подкачки. Часто, поскольку мои проблемы стали больше, я превосхожу всю доступную оперативную память. Вместо того, чтобы сбой (что было бы предпочтительнее), кажется, Ubuntu начинает загружать все в своп, включая Unity и любые открытые терминалы. Если вовремя я не поймаю запущенную программу, я ничего не могу сделать, кроме как ждать - для перехода к командной строке, например, требуется 4-5 минут, например. Ctrl-Alt-F2, где я могу убить процесс оскорбления.
Так как моя собственная глупость выходит за рамки этого форума, как я могу предотвратить сбой Ubuntu через излом, когда я использую всю доступную память из
Откройте терминал, запустите python, и если вы установили numpy, попробуйте это:
>>> import numpy
>>> [numpy.zeros((10**4, 10**4)) for _ in xrange(50)]
* Предупреждение: может иметь неблагоприятные последствия, следить за процессом через iotop или top, чтобы убить его вовремя. Если нет, я увижу вас после перезагрузки.
Встроенная оболочка ulimit позволяет вам ограничить ресурсы.
Демонстрация устанавливает ограничение на память в 100 МБ (100000 КБ):
$ ulimit -v
unlimited
$ python -c '[ "x" * 100000000 ]'
$ ulimit -v 100000
$ python -c '[ "x" * 100000000 ]'
Traceback (most recent call last):
File "<string>", line 1, in <module>
MemoryError
С помощью ps uww -C script-name-here наблюдается, что для python требуется не менее 29 МБ памяти (столбец VSZ). Предел RSS растет, так как вашему скрипту python требуется больше памяти, поэтому адаптируйте этот столбец.
Встроенная оболочка ulimit позволяет вам ограничить ресурсы.
Демонстрация устанавливает ограничение на память в 100 МБ (100000 КБ):
$ ulimit -v
unlimited
$ python -c '[ "x" * 100000000 ]'
$ ulimit -v 100000
$ python -c '[ "x" * 100000000 ]'
Traceback (most recent call last):
File "<string>", line 1, in <module>
MemoryError
С помощью ps uww -C script-name-here наблюдается, что для python требуется не менее 29 МБ памяти (столбец VSZ). Предел RSS растет, так как вашему скрипту python требуется больше памяти, поэтому адаптируйте этот столбец.
Cgroups должны позволить вам ограничить использование вашей памяти на основе каждого процесса.
https://en.wikipedia.org/wiki/Cgroups
https: / /en.wikipedia.org/wiki/Cgroups
Научные вычисления, как известно, интенсивно хранятся в памяти, изолируя ваше приложение в группе, остальные процессы не должны становиться жертвами, поскольку давление памяти будет облегченный.
В качестве альтернативы, VM может использоваться как своего рода жесткий предел, так как приложение может использовать только память, делегированную на виртуальную машину, за счет производительности. Однако виртуальная машина намного проще настраивать для непосвященных по сравнению с настройкой и поддержкой группы.
Решения принятия решений :) Удачи!
Cgroups должны позволить вам ограничить использование вашей памяти на основе каждого процесса.
https://en.wikipedia.org/wiki/Cgroups
https: / /en.wikipedia.org/wiki/Cgroups
Научные вычисления, как известно, интенсивно хранятся в памяти, изолируя ваше приложение в группе, остальные процессы не должны становиться жертвами, поскольку давление памяти будет облегченный.
В качестве альтернативы, VM может использоваться как своего рода жесткий предел, так как приложение может использовать только память, делегированную на виртуальную машину, за счет производительности. Однако виртуальная машина намного проще настраивать для непосвященных по сравнению с настройкой и поддержкой группы.
Решения принятия решений :) Удачи!