Algoritmo eficiente para a consolidação de máquinas virtuais (VM) na nuvem

5

PROBLEMA:
Temos N máquinas físicas (PMs), cada uma com ram R i , cpu C i e um conjunto de VMs agendadas no momento, cada uma com requisitos de ram r i e c i , respectivamente
Mover (Migrar) qualquer VM de uma PM para outra tem um custo associado que depende de sua RAM r i . Um PM sem VMs é desligado para economizar energia.
Nossa meta é minimizar a soma ponderada de (N, custo de migração) migrando algumas VMs, ou seja, minimizar o número de PMs em funcionamento e não degradar o nível de serviço devido a migrações excessivas.

Minha abordagem:
A abordagem de força bruta está escolhendo o PM carregado mínimo e tente ajustar suas VMs a outros PMs pelo algoritmo First Fit Decreasing ou podemos selecionar as PMs vítimas e PMs alvo com base em seu nível de carga e desligar vítimas, se possível, movendo suas VMs para alvos .
Eu tentei essa abordagem Greedy sobre os dados de Baadal (nuvem IIT-D), mas não está dando resultados promissores.

Eu também tentei estudar a otimização de colônia de formigas para a consolidação de VMs dinâmicas, mas não consegui entender muito. Eu usei os links.
link link

Alguém poderia esclarecer a solução ou sugerir qualquer nova abordagem / recursos para melhor desempenho.
Eu estou basicamente procurando os algoritmos não as otimizações físicas e também sei que muitas organizações comerciais forneceram essas soluções, mas eu só queria saber mais sobre os algoritmos subjacentes.

Obrigado antecipadamente.

    
por v78 30.05.2014 / 20:41
fonte

1 resposta

1

Eu não tentaria otimizar a carga entre os PMs, pois isso provavelmente resultaria em movimentação constante de VMs. O resultado de um único movimento provavelmente alterará o equilíbrio, exigindo mais um movimento.

Em vez disso, tentaria determinar o fator de carga aceitável por PM (superalocação) e só executaria ações quando:

a. a ação não atrapalhará as operações

b. o resultado melhorará a situação (uma localização significativamente melhor está disponível em outra PM)

E há outros fatores em jogo também. Você sabe quais máquinas têm 'afinidade' com outras máquinas? Um par de um servidor da Web e um servidor de banco de dados relacionado provavelmente terão melhor desempenho quando colocados mais próximos um do outro.

Em outras palavras: eu teria como objetivo a estabilidade (número mínimo de movimentos e movimentos menores) em vez da otimização máxima de recursos.

Eu acho que você pode otimizar o posicionamento usando certos tamanhos padrão de VMs, que são facilmente divisíveis para o seu hardware (como blocos LEGO são tamanhos diferentes, mas você sempre pode encontrar uma peça que 'se encaixa'), Isso minimizaria o hardware de 'descanso' inutilizável para um PM que é pequeno para colocar uma VM.

Mas eu suponho que os maiores fornecedores de software de virtualização já tenham trabalhado muito melhor do que você ou eu em 5 minutos.

    
por 30.05.2014 / 22:00
fonte