Я пытаюсь запустить скрипт Python, для которого требуется много виртуальной памяти. Я использую 64-разрядную версию Linux Mint 17.3 и Python 2.7.
По мере роста процесса Python я могу видеть (используя команду free -m), как увеличивается объем используемой оперативной памяти, но объем используемого пространства подкачки фактически оказывается равным уменьшение.
Я попытался изменить vm.swappiness с 60 на 90, но, похоже, это не помогло.
Дело не в том, что пространство подкачки полностью не используется - часть его уже используется. Но его не используют так часто, как следовало бы.
Кстати, я нахожусь в экземпляре VMWare.
Как я могу запустить этот большой процесс без ошибки MemoryError и без изменения кода?
Спасибо!
PS: Вот бесплатный вывод -m:
$ while : ; do free -m; date; echo; sleep 10; done
cmd output started 2016 Fri Aug 19 08:47:39 AM PDT
total used free shared buffers cached
Mem: 7968 4764 3203 31 215 335
-/+ buffers/cache: 4214 3754
Swap: 8189 3452 4737
Fri Aug 19 08:47:39 PDT 2016
total used free shared buffers cached
Mem: 7968 4880 3087 31 215 343
-/+ buffers/cache: 4321 3646
Swap: 8189 3451 4738
Fri Aug 19 08:47:49 PDT 2016
total used free shared buffers cached
Mem: 7968 4982 2985 31 215 343
-/+ buffers/cache: 4423 3544
Swap: 8189 3449 4740
Fri Aug 19 08:47:59 PDT 2016
Оказалось, что, хотя процесс начинался медленно, он внезапно увеличился (или попытался вырасти) сильно и попал в состояние нехватки памяти.
Я смог проверить это с помощью strace (Отладка с помощью трассировщиков системных вызовов | stromberg.dnsalias.org). Я мог видеть, как он снова и снова воспроизводит маленькие фрагменты, а затем, прямо перед ошибкой, он воспроизводит большой кусок.
Поэтому я добавил много места для подкачки, и ошибка исчезла.
Спасибо всем, кто это прочитал.