13) In cosa consiste in particolare il load sharing?
Consiste nell’utilizzo delle risorse in modo che nessun processore sia idle, cioè nell’implementare soluzioni per un’ottimale distribuzione del carico. Occorre determinare quali processi, quando e dove muoverli.
Le implementazioni distribuite realizzano la ricerca di processori liberi in grado di essere utilizzati.
Organizzazioni possibili (rispetto all’interconnessione)
Ring logico (interconnessione di tipo statico)
È una struttura logica per la ricerca con un token in un anello
Si invia un broadcast iniziale della richiesta di esecuzione e si distribuisce il carico secondo le risposte
Gerarchia logica MICROS (interconnessione di tipo dinamico)
Obiettivi
- gestione di un numero di nodi molto elevato
- numero di utenti elevato e di applicazioni molto varie
- indipendenza dalla topologia
- gestione della replicazione
L'architettura è gerarchica ma logica: non ci sono connessioni dirette
Il worker (slave) ha funzioni di calcolo ed I/O
Il manager (master) ha funzioni di gestione
Il numero di livelli dipende dal numero di worker
In caso di guasti:
master: si prevede la presenza di più nodi master
slave: il master deve poter comandare altri slave ai livelli sottostanti
realizzazione con:
allocazione statica: si allocano un numero di processori worker adatti ed i relativi manager
allocazione dinamica: si possono richiedere altri nodi di elaborazione nella gerarchia; al limite si possono chiedere nuove risorse al livello sovrastante
Worm (interconnessione di tipo dinamico)
approccio innovativo:
- parallelismo
- tollerante ai guasti
- adattativo alla rete ed alla topologia
- tende al bilanciamento nell'uso delle risorse
il Worm (verme) è fatto di uno o più segmenti, cioè processi, che possono comunicare tra loro
Un verme si incarica di cercare i nodi liberi attraverso clonazione su nodi liberi, a seguito di probe mandati dai segmenti che vogliono espandersi
È una metodologia decentralizzata: non si conosce lo stato del verme globalmente.
Il Load sharing può essere fatto a priori o durante l'esecuzione, ma senza muovere gli elementi una volta che li abbiamo allocati.
Load Balncing
Le politiche di allocazione si realizzano:
assumendo la conoscenza dei processi (caso statico) o meno (caso dinamico)
ottimizzando globalmente (caso statico - costi elevati) o meno (costi accettabili dinamici)
lavorando in modo esatto (costi a volta inaccettabili) o approssimato ed euristico. In particolare, i costi sono fondamentali per i casi più complessi in quanto:
le risorse di esecuzione dipendono dal singolo processo
le risorse di comunicazione dipendenza dalla allocazione di coppie di processi (non linearità)
Nel caso statico si possono usare algoritmi anche complessi per calcolare un’allocazione, ma spesso queste strategie non sono applicabili durante la esecuzione, in quanto hanno costo elevato e l’obiettivo è sempre la riduzione dell’overhead.
la riallocazione o riconfigurazione in sistemi eterogenei deve tenere conto delle diverse forme di rappresentazione per ogni passaggio
- Uso di forme di rappresentazione astratta e necessità di traslazione dei dati (vedi XDR e ASN.1)
- Uso di interpreti e forme di esecuzione astratta (vedi Java)