Algoritmo efficiente per il consolidamento di macchine virtuali (VM) in cloud

5

PROBLEMA: Abbiamo N macchine fisiche (PM) ciascuna con ram R i , cpu C i e una serie di VM attualmente pianificate ciascuna con requisito di ram r i e c i rispettivamente
Lo spostamento (migrazione) di qualsiasi VM da un PM ad un altro ha un costo associato che dipende dalla sua ram r i . Un PM senza VM viene spento per risparmiare energia.
Il nostro obiettivo è ridurre al minimo la somma ponderata di (N, costo di migrazione) migrando alcune macchine virtuali, riducendo al minimo il numero di PM operativi e non degradando il livello di servizio a causa di migrazioni eccessive.

Il mio approccio: L'approccio della forza bruta sta scegliendo il PM caricato minimo e proviamo ad adattare le sue VM ad altri PM tramite l'algoritmo First Fit Decreasing o possiamo selezionare i PM vittoriosi e le PM target in base al loro livello di carico e arrestare le vittime, se possibile, spostando le VM verso gli obiettivi .
Ho provato questo approccio Greedy sui dati di Baadal (IIT-D cloud) ma non sta dando risultati promettenti.

Ho anche provato a studiare l'ottimizzazione delle colonie di Ant per il consolidamento dinamico delle VM, ma non sono riuscito a capire molto. Ho usato i collegamenti.
link link

Qualcuno potrebbe chiarire la soluzione o suggerire un nuovo approccio / risorse per migliorare prestazioni.
Sono fondamentalmente alla ricerca degli algoritmi e non delle ottimizzazioni fisiche e so anche che molte organizzazioni commerciali hanno fornito queste soluzioni, ma volevo solo sapere di più sugli algoritmi sottostanti.

Grazie in anticipo.

    
posta v78 30.05.2014 - 20:41
fonte

1 risposta

1

Non cercherò di ottimizzare il carico attraverso i PM, dal momento che ciò probabilmente determinerà il costante spostamento delle VM. Il risultato di una singola mossa probabilmente cambierà il bilanciamento, richiedendo un altro movimento.

Invece, proverei a determinare il fattore di carico accettabile per PM (sovra-allocazione) e ad adottare solo azioni quando:

a. l'azione non disturberà le operazioni

b. il risultato migliorerà la situazione (una posizione significativamente migliore è disponibile su un altro PM)

E ci sono anche altri fattori in gioco. Sai quali macchine hanno 'affinità' con altre macchine? Una coppia di un server Web e un server di database correlato probabilmente funzioneranno meglio se posizionati più vicini l'uno all'altro ..

In altre parole: punterei sulla stabilità (numero minimo di mosse e mosse più piccole) invece che sull'ottimizzazione massima delle risorse.

Immagino che tu possa ottimizzare il posizionamento usando alcune dimensioni standard di VM, che sono facilmente divisibili per il tuo hardware (come i blocchi LEGO sono di dimensioni diverse, ma puoi sempre trovare un pezzo che "si adatta"), che minimizzerebbe l'hardware "di riposo" inutilizzabile per un PM che è troppo piccolo per posizionare una VM.

Ma immagino che i principali fornitori di software di virtualizzazione abbiano già funzionato molto meglio di voi o io in 5 minuti.

    
risposta data 30.05.2014 - 22:00
fonte

Leggi altre domande sui tag