Suponha que um determinado aplicativo paralelo use um design mestre-escravo para processar um grande número de cargas de trabalho. Cada carga de trabalho leva algum número de ciclos para ser concluída; o número de ciclos que uma determinada carga de trabalho levará é dado por uma variável aleatória conhecida. Suponha que existem cargas de trabalho e escravos equivalentes (nós de processamento). Naturalmente, uma versão mais geral dessa questão aborda o caso de escravos de diferentes capacidades, mas ignoramos isso por enquanto.
O mestre não pode processar cargas de trabalho, mas pode distribuir cargas de trabalho para nós escravos e monitorar o progresso dos nós escravos. Especificamente, o mestre pode executar as seguintes ações:
- Comece instantaneamente o processamento de qualquer cargas de trabalho em qualquer nó livre.
- Receba instantaneamente a confirmação da conclusão por um nó de um lote iniciado anteriormente cargas de trabalho.
- A qualquer momento e instantaneamente, determine o estado de todos os nós (livre ou ocupado), bem como o número de cargas de trabalho concluídas e o número de cargas de trabalho restantes.
Por uma questão de simplicidade, assuma divide .
Existem pelo menos duas categorias de estratégias de balanceamento de carga para minimizar o tempo total de execução de todas as cargas de trabalho usando todos os escravos (para esclarecer, estou falando sobre o tempo do makepan ou do relógio de parede, não o tempo agregado do processo, independente do tempo de execução). estratégia de balanceamento de carga usada sob as suposições simplificadoras feitas nesta pergunta): estática e dinâmica. Em um esquema estático, todas as decisões de posicionamento são tomadas no momento. Em um esquema dinâmico, o mestre pode tomar decisões de posicionamento usando informações sobre o progresso que está sendo feito por alguns escravos e, como tal, pode ser obtida uma melhor utilização (na prática, existem custos indiretos associados ao planejamento dinâmico em comparação ao planejamento estático, mas nós ignore-os). Agora, para algumas perguntas:
- Existe uma maneira melhor de planejar estaticamente cargas de trabalho do que dividir lotes de cargas de trabalho entre os escravos o mais uniformemente possível (também podemos assumir, por uma questão de simplicidade, que divide , para que os lotes possam ser programados estaticamente de maneira completamente uniforme)? Se sim, como?
- Usando a melhor política de planejamento estático, qual deve ser a média e o desvio padrão para o tempo total de execução, em termos da média e desvio padrão do ?
Um balanceador de carga dinâmico simples pode agendar lotes de cargas de trabalho para cada escravo inicialmente e, em seguida, quando os nós concluírem o lotes, programe um lote adicional de cargas de trabalho para cada escravo por ordem de chegada. Portanto, se dois nós escravos são inicialmente agendados com 2 lotes de 2 cargas de trabalho e o primeiro escravo termina seus dois lotes, um lote adicional é agendado para o primeiro escravo, enquanto o segundo escravo continua trabalhando. Se o primeiro escravo concluir o novo lote antes que o segundo lote termine seu trabalho inicial, o mestre continuará agendando para o primeiro escravo. Somente quando o segundo escravo concluir a execução de seu trabalho, será emitido um novo lote de cargas de trabalho. Exemplo:
DYNAMIC STATIC
POLICY POLICY
slave1 slave2 slave1 slave2
------ ------ ------ ------
t<0 -- -- -- --
t<1 batch1 batch3 batch1 batch3
batch2 batch4 batch2 batch4
batch5 batch7
batch6 batch8
t=1 -- batch3 batch5 batch3
batch4 batch6 batch4
batch7
batch8
t<2 batch5 batch3 batch5 batch3
batch4 batch6 batch4
batch7
batch8
t=2 -- batch4 batch6 batch4
batch7
batch8
t<3 batch6 batch4 batch6 batch4
batch7
batch8
t=3 -- -- -- batch7
batch8
t<4 batch7 batch8 -- batch7
batch8
t=4 -- -- -- batch8
t<5 -DONE- -- batch8
t=5 -- --
t < 6 -DONE-
Para esclarecimento, os lotes 1 e 2 levam 1/2 segundo cada para serem processados, o lote 3 leva 2 segundos para serem processados e os lotes 4-8 levam 1 segundo para serem processados. Esta informação não é conhecida a priori; no esquema estático, todos os trabalhos são distribuídos em t = 0, enquanto no esquema dinâmico, a distribuição pode levar em consideração quais são os tempos de execução reais dos trabalhos. Notamos que o esquema estático leva um segundo a mais que o esquema dinâmico, com o slave1 trabalhando 3 segundos e o slave2 trabalhando 5 segundos. No esquema dinâmico, os dois escravos trabalham por 4 segundos completos.
Agora, a pergunta que motivou a escrever isso:
- Usando a política de balanceamento de carga dinâmico descrita acima, qual deve ser a média e o desvio padrão para o tempo total de execução, em termos da média e desvio padrão do ?
Os leitores interessados têm minhas garantias de que isso não é lição de casa, embora provavelmente não seja muito mais difícil do que se poderia esperar obter como lição de casa em determinados cursos. Dado que, se alguém se opuser a isso e exigir que eu mostre algum trabalho, ficarei feliz em obrigar (embora não saiba quando terei tempo no futuro próximo). Essa questão é, na verdade, baseada em algum trabalho que eu nunca cheguei a fazer um semestre ou dois atrás, e os resultados empíricos foram onde a deixamos. Obrigado pela ajuda e / ou esforço, ficarei interessado em ver o que vocês montaram.