2

Когда я запускаю фрагмент кода Python, который использует слишком много оперативной памяти, мой компьютер начинает переставлять так сильно, что мне приходится делать полную перезагрузку. Чтобы исправить это, я отключил обмен, предполагая, что убийца OOM вступит. Тем не менее, я все еще получаю точно такие же симптомы! То есть я слышу, как трескается жесткий диск, как только вся оперативная память используется, компьютер зависает, и мне приходится делать полную перезагрузку.

Что может происходить и как я могу это исправить?

Моя система работает под управлением Ubuntu 14.04.2 LTS, 3.13.0-43-generic # 72-Ubuntu SMP Пн. 8 декабря 19:35:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux с 8 ГБ ОЗУ.

Мои /etc /fstab показывают

# / was on /dev/sda1 during installation
UUID=80919e96-e83b-4c88-b30e-8673e1faa3b4 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
#UUID=68064725-c1bb-4293-b8d1-45b2a42fb7b4 none            swap    sw              0       0

Более подробная информация

tail -n+1 /proc/sys/vm/overcommit_*
==> /proc/sys/vm/overcommit_memory <==
0

==> /proc/sys/vm/overcommit_ratio <==
50

cat /proc/sys/vm/oom_kill_allocating_task
0

Пример кода

Мне жаль говорить, что я не знаю, как сделать минималистский пример Python, который показывает эту проблему. Однако это не минималистский код, который определенно делает http://paste.ubuntu.com/11621823/. Просто измените значение "пути" в коде и запустите его. В моей системе он использует всю оперативную память, а затем полностью останавливает систему.

1 ответ1

2

Ваша проблема - ваш python code и он не имеет ничего общего со swap .

Пространство Swap используется операционной системой, когда нагрузка на память увеличивается. Затем те процессы, которые в данный момент не используются, перемещаются в пространство подкачки, которое является разделом. Таким образом, можно освободить больше памяти для процесса, который в данный момент выполняется. При использовании процессов, перемещенных в раздел подкачки, он перемещается из области обмена обратно в память.

Этот способ обмена полезен для решения ситуаций, когда требуется больше памяти для выполнения чего-либо, чем объем доступной свободной памяти.

Поскольку вы выключаете своп, это не решит вашу проблему, а только увеличит ее. Единственное решение вашей проблемы, о котором я могу подумать, - это либо оптимизировать ваш код Python, чтобы использовать меньше памяти, либо увеличить объем памяти на вашем компьютере.

Также было бы лучше, если бы вы могли разместить свой код здесь, чтобы люди могли помочь в его оптимизации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .