como resolver um impasse (multithreading um programa)

2

Eu preciso executar um programa 100 vezes, algumas horas cada, o que é bom quando executá-lo de forma serial, leva muito tempo, mas quando eu tento paralelizá-lo usando o GNU paralelo ou simples '&' no bash, ele trava / congela, eu suspeito de um deadlock, mas eu não escrevi o programa, então não posso depurá-lo.

Eu acho que há pouca chance, mas existe uma maneira, talvez, uma maneira fácil de executar um aplicativo em algum tipo de isolamento ou quarentena de todo o resto no linux? (sem ir para várias virtualboxes: P)

    
por tafelplankje 28.01.2015 / 21:37

2 respostas

1

O que este programa está fazendo - você sabe o que está usando (mems compartilhadas, exclusões mútuas, talvez arquivos com o mesmo nome e cada instância sobrescrevendo-o, você pode verificar no diretório tmp). Tentou strace ?

Não saiba a escala do seu problema, mas você pode usar o Docker - link para criar contêineres leves ou dar uma olhada no QubesOs para criar ambientes isolados link ou tente usar este programa no ambiente chrooted

    
por 28.01.2015 / 21:46
0

Como KaP diz: dê uma olhada. Você pode iniciar o strace quando ele trava usando -p.

Você pode reproduzir o problema se estiver executando como usuários diferentes (cada usuário executa uma única cópia)?

Se você tiver sorte, o programa só trava quando os programas são iniciados ao mesmo tempo. Se esse for o caso, use '--delay' no GNU Parallel para atrasar o início do próximo trabalho.

    
por 28.01.2015 / 23:09