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, emgdb
) 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
.