Linux Mint: o processo Python obtém “MemoryError” antes que o swap esteja perto de ser usado

1

Estou tentando executar um script Python que requer muita memória virtual. Estou no Linux Mint 17.3 64 bit e no Python 2.7.

Conforme o processo Python cresce, eu posso ver (usando free -m) que a quantidade de RAM aumenta, mas a quantidade de espaço de troca usada parece estar diminuindo .

Eu tentei mudar o vm.swappiness de 60 para 90, mas parece que isso não ajudou.

Não é uma questão de o espaço de troca estar totalmente sem uso - parte dele está em uso. Mas não está sendo usado tanto quanto provavelmente deveria ser.

BTW, estou em uma instância do VMWare.

Como posso executar este grande processo sem um MemoryError e sem alterar o código?

Obrigado!

PS: Aqui está uma saída grátis:

$ 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
    
por user1084684 19.08.2016 / 17:55

1 resposta

0

Descobriu-se que, embora o processo tenha começado a crescer lentamente, subitamente cresceu (ou tentou crescer) muito e atingiu uma condição de falta de memória.

Consegui verificar isso com strace ( Depuração com rastreadores syscall | stromberg.dnsalias. org ). Eu pude vê-lo mmap'ing pequenos pedaços mais e mais, e logo antes do erro seria mmap um grande pedaço.

Então, adicionei muito espaço de troca e o erro desapareceu.

Obrigado a todos que leram isso.

    
por 29.08.2016 / 22:50