Mauro Bampo
Reti di Calcolatori L-S
Un Sistema Decentrato di
Allocazione del Carico per
Applicazioni di Calcolo Distribuito
L’Idea



Realizzare un supporto alla scrittura di
applicazioni parallele di calcolo
(scientifiche, simulazione, …)
Investigare la realizzazione di un
sistema decentrato ed eventualmente
tollerante ai guasti
Raccolta delle risorse di calcolo in rete
locale (più semplice di scenari globali)
08/09/2005
Sistema Decentrato di Allocazione del Carico
2
Requisiti

Permettere di:





Avviare una applicazione
Definire processi e strutture dati
Allocazione automatica di dati e processi,
secondo le capacità ed il carico attuale dei
nodi
Supporto alle modifiche dinamiche della rete
durante l’esecuzione
Offrire qualche forma di fault tolerance
08/09/2005
Sistema Decentrato di Allocazione del Carico
3
Architettura Logica

Due sottosistemi presenti su tutti i nodi:

Supporto al mantenimento di un anello logico
(semplice) tra i nodi partecipanti alla griglia di
calcolo



Servizi di allocazione di processi e dati


08/09/2005
Ingresso / uscita dei nodi
Fault detection & recovery
Bilanciamento del carico
Sfrutta la conoscenza sui vicini offerta dal primo
modulo
Sistema Decentrato di Allocazione del Carico
4
Gestione della Topologia (1)




Permette ingressi e uscite di nodi
Protocollo ad-hoc basato su UDP
Riferimento ai vicini in ogni nodo
Ogni nuovo entrante prende l’iniziativa
scegliendo la posizione dell’anello in cui
inserirsi



08/09/2005
broadcast per scoprire i nodi già attivi (LAN:
reliable)
scelta dei due nodi più rapidi nella risposta
aggiornamento dei riferimenti
Sistema Decentrato di Allocazione del Carico
5
Gestione della Topologia (2)

Uscita dall’anello comunicando ai vicini
di aggiornare i riferimenti in modo
incrociato

Problema del protocollo: non supporta
i join contemporanei di più nodi →
attenzione al startup della rete
08/09/2005
Sistema Decentrato di Allocazione del Carico
6
Fault Tolerance



Tolleranza alla caduta del singolo nodo
Messaggi AreYouAlive scambiati tra nodi
vicini
Alla caduta di un nodo:


08/09/2005
si comunica il fallimento agli altri nodi e ad
eventuali clienti (strati superiori)
si ricostruisce l’anello (serie di operazioni di join,
diversamente ritardate, da parte dei nodi
sopravvissuti)
Sistema Decentrato di Allocazione del Carico
7
Gestione dell’Esecuzione



Server che gestisce l’allocazione sotto forma di oggetto
Java remoto (un’istanza su ogni nodo)
Ad ogni server può essere richiesto il lancio di
applicazioni e l’allocazione di processi e dati condivisi
tra questi
Ogni nodo dispone di una stima delle performance della
macchina (potenza di calcolo e disponibilità di memoria)



Caricate da file → una stima dinamica potrebbe essere
migliore
Coordinazione dei nodi per effettuare le scelte di
allocazione
Applicazioni lanciate richiedendo, ad uno dei servitori
disponibili, l’allocazione del processo principale
08/09/2005
Sistema Decentrato di Allocazione del Carico
8
Allocazione dei Processi (1)


Determinazione del servitore più scarico
tramite interrogazione di tutti i nodi
Ogni nodo stima il proprio carico come:
LOAD = N_PROC / (CPU_PERF * N_CPU)
dove:
 N_PROC: numero di processi allocati
 CPU_PERF: fattore indicante la potenza
computazionale delle CPU della macchina (da
misurarsi con un criterio uniforme per tutte le
macchine)
 N_CPU: numero di CPU sul nodo
08/09/2005
Sistema Decentrato di Allocazione del Carico
9
Allocazione delle Strutture Dati


Oggetti condivisi tra processi
identificati nel sistema da una coppia
(nome_applicazione, id_oggetto)
Ogni processo può richiedere
l’allocazione di un dato al nodo
corrente o al nodo con maggiore
memoria disponibile
08/09/2005
Sistema Decentrato di Allocazione del Carico
10
Accesso alle Strutture Dati

Quando un processo richiede l’accesso ad una
struttura dati, se questa non è già in uso, viene
trasferita sul nodo da cui è acceduta


Necessità di rendere effettive le modifiche
→ Implementazione con oggetti remoti?
Viene permesso l’accesso ad un oggetto condiviso
ad un solo processo per volta

08/09/2005
I processi che richiedono un dato già in uso restano
bloccati in un ciclo di polling, fino alla rimozione del
lock
→ Sincronizzazione più stretta? Coda di processi in
attesa…
Sistema Decentrato di Allocazione del Carico
11
Ancora sulla Fault Tolerance




Tolleranza al guasto singolo a livello dei servizi di
allocazione: trasparenza completa difficilmente
garantibile (necessità di copie dello stato dei
processi in esecuzione sul nodo caduto…)
Si garantisce il completamento delle applicazioni,
facendole ripartire tutte una volta ricostruito l’anello
Ogni nodo a cui è richiesto il lancio di
un’applicazione memorizza una copia del relativo
record localmente, e una copia ridondante presso il
nodo vicino
Le applicazioni lanciate sul nodo caduto vengono
fatte ripartire dai nodi che detengono i record
ridondanti
08/09/2005
Sistema Decentrato di Allocazione del Carico
12
Risultati



Testing con un’applicazione per la
fattorizzazione di interi
Valori di speed-up vicini al numero di
macchine utilizzate, nei casi migliori
Tuttavia è critica la configurazione dei nodi
in termini di stima delle performance

Difficile con hardware eterogeneo

08/09/2005
Utile un meccanismo di stima dinamica delle
capacità di elaborazione
Sistema Decentrato di Allocazione del Carico
13
Strade Aperte

Molti miglioramenti possibili





Sincronizzazione più stretta in fase di join
Migliore gestione dell’accesso concorrente alle
strutture dati
Strutture dati come oggetti remoti?
Restart delle sole applicazioni con processi in
esecuzione sul nodo caduto
Nuove funzionalità



08/09/2005
Replicazione dei dati per migliori performance
Stima dinamica delle performance dei nodi
Deployment del codice delle applicazioni
Sistema Decentrato di Allocazione del Carico
14