
Quando executo um trecho de código python que usa muita RAM, meu computador começa a trocar tanto que preciso fazer uma reinicialização forçada. Para corrigir isso, desativei a troca presumindo que o assassino OOM interviria. No entanto, ainda tenho exatamente os mesmos sintomas! Ou seja, posso ouvir o disco rígido se debatendo quando toda a RAM é usada, o computador congela e preciso fazer uma reinicialização forçada.
O que pode estar acontecendo e como posso consertar?
Meu sistema está executando o Ubuntu 14.04.2 LTS, 3.13.0-43-genérico # 72-Ubuntu SMP Seg, 8 de dezembro 19:35:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux com 8 GB de RAM.
Meu /etc/fstab mostra
# / 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
Detalhes adicionais
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
Código de exemplo
Lamento dizer que não sei como fazer um exemplo minimalista de python que mostre esse problema. No entanto, este é um código não minimalista que definitivamente faz http://paste.ubuntu.com/11621823/. Simplesmente altere o valor de “caminho” no código e execute-o. No meu sistema, ele usa toda a RAM e congela completamente o sistema.
Responder1
Seu problema é seu python code
e não tem nada a ver com isso swap
.
Swap
o espaço é usado pelo sistema operacional quando a carga na memória aumenta. Em seguida, os processos que não são usados atualmente são movidos para o espaço de troca, que é uma partição. Desta forma, mais memória pode ser liberada para o processo que está em execução no momento. Quando os processos movidos para swap são usados, eles são movidos da área de swap de volta para a memória.
Dessa forma, a troca é útil para lidar com situações em que é necessária mais memória para executar algo do que a quantidade de memória livre disponível.
Como você desativa o swap, isso não resolverá o seu problema, apenas o aumentará. A única solução para o seu problema que consigo pensar é otimizar seu código python para usar menos memória ou aumentar a memória em sua máquina.
Também seria melhor se você pudesse colocar seu código aqui para que as pessoas possam ajudar na otimização dele.