Progetto di Reti di Calcolatori
Decisione di migrazione in sistemi distribuiti
Soluzione Implementativa:
La struttura della rete e' rappresentata mediante
un "ring logico" ed ogni nodo della rete
locale e' identificato da una lable progressiva: Lia01, Lia02
ecc.
Ogni volta che l'utente lancia un processo su una macchina (evento scelto) il processo Nodo esegue un confronto tra il numero di processi in essere sul nodo e quelli presenti all'evento precedente.
Se vi e' una differenza, in eccesso o difetto, di oltre il 10% all'ora si ricalcola la Media.
La MEDIA e' una stima sul carico medio del sistema e funziona cosi'.
Ogni nodo calcola una media sommando i processi operanti su di se e sui nodi immediatamente adiacenti. Poi ne calcola un altra con i valori delle medie dei tre nodi (se stesso e i sui vicini), ed infine la nuova media del nodo si trova facendo la media algebrica dei due valori cosi' ottenuti.
In funzione della nuova media si aggiorna lo stato del Nodo.
In particolare se il n° di processi attivi sulla macchina e' inferiore al 25% della media ==> il nodo e' MOLTO SCARICO.
Se il n° di processi attivi sulla macchina e' compreso tra -25% e -10% rispetto alla media ==> il nodo e' SCARICO.
Se il n° di processi attivi sulla macchina e' compreso tra +10% e +25% rispetto alla media ==> il nodo e' CARICO.
Se il n° di processi attivi sulla macchina e' superiore al 25% della media ==> il nodo e' MOLTO CARICO.
Altrimenti il nodo e' in una condizione di equilibrio rispetto al carico del sistema ed il suo stato e' EQUILIBRIO.
In quest' ultimo caso ovviamente non sono previste operazioni.
La politica che vogliamo realizzare e' la seguente:
Un nodo carico, andra' a cercarne uno scarico che possa accettare un suo processo.
Un nodo molto carico invece, essendo gia' particolarmente oberato di lavoro, attende di essere liberato da parte di un nodo molto scarico.
Si noti che ogni nodo avra' sempre attivi i processi che rispondono ai servizi di nodo molto carico e nodo scarico (processi server fissati ad una specifica porta).Essi verranno terminati con la terminazione del programma principale.
Tali processi influiscono in minima parte sul carico della macchina, visto che si bloccano in attesa di richieste venendo dunque deschedulati dal sistema quando non vengono interpellati.
Ipotesi implementative | Soluzione
implementativa | Guida al codice | Considerazioni