Como gerenciar melhor a execução de vários processos?

2

Meu computador tem 6 núcleos. Eu tenho que executar 12 processos. Cada processo leva exatamente 10 minutos.

Eu quero considerar (apenas para o argumento) dois cenários:

  1. Eu executo 2 processos sucessivamente em cada núcleo. Deve demorar 20 minutos para terminar.

  2. Eu abro 12 janelas do terminal e estou executando todos os 12 processos de forma independente. Cada núcleo precisará, portanto, alternar entre os diferentes processos para nos dar a sensação de que os 12 processos são paralelizados.

Pergunta

Isso importa? Isso faz uma grande diferença?

Minhas ideias básicas

Eu esperaria que a segunda solução levaria um pouco mais de tempo, pois precisaria de algum tempo para os núcleos irem e voltarem para os diferentes processos. No entanto, existem muitos outros pequenos processos no computador executados pelo root, por exemplo. Eu esperaria que o segundo cenário levasse um pouco mais de tempo, mas isso seria muito insignificante. Eu fiz uma tentativa e não notei nenhuma diferença, mas meus processos talvez fossem muito curtos para perceber qualquer coisa.

    
por Remi.b 02.07.2015 / 23:47

1 resposta

3

A diferença provavelmente será insignificante. A opção 1 poderia ser mais rápida devido à menor troca de contexto da CPU, mas outros fatores também entrarão em ação.

Conforme você se observa, o problema é que o seu sistema operacional tem centenas de threads em execução ao mesmo tempo, de modo que a CPU será alternada de contexto. O que provavelmente torna a Opção 1 não melhor que a Opção 2.

CONTUDO se seus processos estiverem utilizando algum tipo de recurso compartilhado , como Cache da CPU, RAM, HDD, Rede, você pode achar que uso simultâneo (ou mudança de contexto ) desses recursos faz uma enorme diferença. Nesse caso, a execução sucessiva pode ajudar muito.

No final, teste os dois e siga o que funciona melhor para você: -)

    
por 03.07.2015 / 00:05