Como diagnosticar meu programa Python sendo morto devido a um erro de falta de memória?
Estou construindo uma Rede Neural que analisa grandes quantidades de dados (40G), e meu iMac mata o processo depois que ele está em execução há cerca de um dia.
No passado, no Linux, criei um grande arquivo de troca para contornar as limitações de memória.
Eu vim a conhecer isso como a mensagem "você gastou muita memória, adeus". Mais uma vez, consegui resolvê-lo usando um grande arquivo de permuta no linux. Como posso aumentar o limite de troca no meu mac para que meus processos que usam grandes quantidades de memória não sejam mortos?
Não tenho certeza de como eu poderia obter mais informações sobre o motivo de ter sido morto.
Você pode editar exatamente as mensagens do sistema registradas quando o processo é encerrado? Qual é o status da memória naquele momento (talvez 5 minutos antes e 5 minutos após o término?) Meu palpite é que você tem outro problema, pois o swap pode e aumentará para ocupar todo o espaço no volume de inicialização, mas geralmente é o programa. falha em ter tanta RAM trocada e nunca mais voltar.
Adicionadas algumas edições acima.
— Entre o
Edições agradáveis. Como você o está executando a partir de um shell, considere também a possibilidade de ulimit -anão ter um caso de teste em que eu possa causar o bloqueio do sistema na versão 10.10.x. Observe também a pressão
Aqui estão algumas maneiras de verificar se há problemas, mas receio que eles não sejam uma solução completa ou mesmo a correta, sem mais espreitar ou cutucar:
Em outro shell depois de iniciar seu processo python (ou se você screen/ tmuxele):
vm_stat e vm_stat 600
Depois de ter uma boa linha de base, você pode observar as coisas ao longo do tempo para ver como a rede neural está se comportando a cada hora por um tempo. Se você acha que as coisas estão prestes a parar, você pode executar sysdiagnose python(ou usar o processo # se tiver mais de um processo python em execução). Além disso, se você não quiser esperar o dia inteiro para aumentar as coisas, poderá infligir memory_pressureao sistema antes ou depois de iniciar a rede neural em python. Veja esta resposta para saber como monitorar o Monitor de Atividade ao executar este processo:
Incrível, obrigado por isso. Vou brincar com ele e ver o que encontro.
Tenho a certeza que você quer dizer df /que você escreveudf \
@PascalCuoq Você está certo. Sinta-se à vontade para editar postagens onde este for o caso no futuro :-) Às vezes, o sistema está irritadiço com pequenas edições.
@bmike Sim, nos sites do SE em que se está começando apenas com 100 reputação, é necessário encontrar pelo menos 6 caracteres para alterar para que a edição seja considerada significativa e entre na revisão. Eu tenho feito isso, mas pode ser-puxando o cabelo: crypto.stackexchange.com/posts/18651/revisions