A sobrecarga de coordenação entre dois processos é significativa?

2

Eu tenho 24 processos intensivos de computação, cada processo sendo executado em um único thread, cada um executando cerca de 2 horas. Estou em uma CPU de 8 núcleos.

Faz diferença no tempo de execução total, se eu executar todos os 24 processos ao mesmo tempo, em contraste com a execução de apenas 8 processos simultaneamente?

Estou falando de sobrecarga de coordenação entre os processos, portanto, neste caso, cada CPU receberia 3 processos - essa sobrecarga é significativa?

    
por lukstei 07.03.2017 / 18:56

1 resposta

2

Isso dependerá da sua carga de trabalho específica e de mais detalhes do seu arquitetura (por exemplo, os processos lêem a mesma memória, o que pode estar em nós NUMA separados?), então seria melhor se você pudesse medir desempenho e ver o que você recebe.

Executar 24 tarefas intensivas de CPU em mais de 8 unidades de execução exigirá agendando tarefas on e off, enquanto executando tantas tarefas quanto unidades de execução devem, em princípio, exigir menos comutação. Eu não faria esperar que a sobrecarga relacionada à execução de código para alternar entre tarefas é tão alto, mas, quando uma tarefa é agendada com uma CPU, efeito é que o estado de caches dessa CPU corre o risco de ser liberado (eles provavelmente se tornarão inúteis para a nova tarefa que está sendo agendada); se isso acontecer com frequência suficiente, pode levar a um desempenho degradado.

No seu caso, pode fazer sentido comparar esses três entre si:

  1. Executa 24 tarefas simultâneas;
  2. executar 8 tarefas;
  3. executam 8 tarefas, atribuindo uma CPU específica a cada uma delas.

Você pode fazer (3) usando, por exemplo, cpuset no Linux.

    
por 07.03.2017 / 19:41