O Ubuntu trava quando a memória é excedida por um programa grande

2

Eu tenho usado o Ubuntu para executar simulações computacionais de materiais. Às vezes, os cálculos superam a memória total disponível da máquina, 64 GB de RAM, e começa a usar o swap. Quando isso acontecer, o Ubuntu simplesmente pára e é necessário reinicializar. Executando as mesmas simulações com o linux Slackware isso não aconteceu, ao invés disso, as simulações que foram paradas e eu tenho um erro no terminal, algo assim: "falha de segmentação". É possível executar as simulações no Ubuntu e superar o problema das paradas do Ubuntu, como o Slackware?

Obrigado.

    
por user190710 06.09.2013 / 22:48

1 resposta

3

Se você está recebendo falhas de segmentação quando você executa seu software de simulação em um sistema e uma grande lentidão ao executá-lo em outro, seu software de simulação não é indicado para manipular a falta de memória suficiente. Qualquer falha de segmentação é uma indicação de um bug , e freqüentemente erros que produzem falhas de segmentação são realmente bugs onde o comportamento do código é indefinido . Em sistemas diferentes, pode agir de maneiras diferentes (erradas).

Então:

  • Se você ou alguém com quem você trabalhou escreveram o software de simulação, você deve depurá-lo com a esperança de melhorar o desempenho. Eu recomendo começar compilando-o com símbolos de depuração ( gcc -g ... ) e depurando interativamente (por exemplo, em gdb ) no Slackware para produzir um rastreamento de pilha da falha de segmentação.

    Você também deve depurá-lo para encontrar vazamentos de memória. Você pode usar Valgrind , Boehm GC em execução no modo de detecção de vazamentos , ou uma variedade de outras ferramentas para isso.

    É claro que a maneira mais apropriada de depurá-lo dependerá dos detalhes de como ele funciona e de qual idioma está escrito.

  • Se você adquiriu o software de simulação de uma festa totalmente separada, você deve relatar um bug. Se um símbolo de construção ou depuração de depuração estiver disponível para você, o relatório de erros se beneficiaria da inclusão de um rastreamento de pilha da falha de segmentação no sistema Slackware.

Pode haver algumas coisas que você pode fazer para finalizar a simulação no Ubuntu.

Todo o sistema não deve parar. Isso provavelmente indica um bug no Ubuntu, possivelmente no kernel. Até mesmo o I / O de disco massivo deve desacelerar o Ubuntu moderadamente. Você pode querer relatar um bug no kernel do Ubuntu sobre isso.

Se você quiser fazer isso, primeiro leia isto . Então você iniciaria o processo de relatório de bugs executando ubuntu-bug linux (ou se é um sistema somente de linha de comando, apport-cli linux ).

Para contornar o problema , você pode tentar limitar a memória disponível especificando limites em limits.conf . Veja também esta postagem no blog .

Caso o problema tenha algo a ver com a prioridade da CPU, você pode executar a simulação com uma prioridade mais baixa com nice (por exemplo, nice -n 15 command... ) ou diminua enquanto estiver rodando com renice .

Se você puder usar a máquina enquanto ela fica mais lenta e a simulação precisa ser interrompida (às vezes, um console virtual responde melhor que a GUI), você pode tentar matar o processo com KILL signal (que é a maneira mais strong de matar um processo):

kill -KILL command

Aqui command é apenas uma palavra, o nome do executável. Todos os executáveis com esse nome serão eliminados (portanto, " killall ") . Se você tiver o PID (de ps ), é claro que você pode executar kill -KILL PID .

    
por Eliah Kagan 07.09.2013 / 00:06