# Piattaforme e Software per la rete - lezione 9 #### William Fornaciari ###### 12 May 2016 ## Distributed Process Allocation ### Migrazione Le politiche di scheduling __non migratorie__ Fanno sí che un processo rimanga sulla macchina su cui é partito finché non termina Le politiche di scheduling __migratorie__ permettono di spostare un task giá in esecuzione su una macchina adatta. Tuttavia questo introduce dell'*overhead* consistente in: - Tempo - Consumo energia - Quantitá di memoria Il problema principale é dovuto allo spostamento dei dati necessari all'applicazione. Per quanto riguarda l'energia, non é detto che usare una macchina piú potente migliori il rendimento energetico, e inoltre viene spesa energia anche per il trasferimento. Quindi le migrazioni hanno senso se durano abbastanza a lungo da dare benefici di 10 volte l'overhead, inoltre non é detto che sia possibile interrompere l'applicazione per trasferirla. ### Overall design issues Potrebbe essere una buona idea allocare i processi su alcune delle cpu e spegnere le altre: - Una CPU scarica consuma sempre di piú di una CPU spenta. O potrebbe servire tenere delle CPU scariche se si pensa che debba arrivare un picco di utilizzo. Per quanto riguarda la __logica delle comunicazioni__ Puó essere utile mettere in un sistema distribuito due processi che comunicano di frequente sulla stessa macchina, o nel caso siano thread, eventualmente incorporarli in un unico processo. Se abbiamo grosse moli di dati conviene se possibile metterle sulla stessa macchina che li deve elaborare Per la __availability__ cioé nel caso di upgrade di componenti hardware puó essere spostata la macchina virtuale o nel caso non sia disponibile, solo il processo. Per quanto riguarda il carico termico, conviene bilanciare il profilo termico spostando il processo su varie macchine in modo da mitigare il problema del __thermal breakdown__ ### Allocation algorithms: taxonomy Gli algoritmi possono essere: - Deterministici o euristici - Centralizzati o distribuiti - Ottimi o sub-ottimi Un altro aspetto di questi algoritmi é che modificando lo stato del sistema non appena si avvicina una situazione sub-ottima, questo puó portare a delle instabilitá. ### Migrazione dei processi La migrazione consiste nel trasferire parte dello stato di un processo su una macchina di destinazione per permettere il proseguimento. La migrazione puó essere avviata dal sistema operativo che possiede il quadro complessivo, o dal processo stesso. ### Modellazione con grafi Consiste nel tracciare i processi e le dipendenze con nodi e archi, e fare un taglio in modo che la macchina soddisfi i requisiti dei nodi nel taglio, e che i collegamenti esterni siano minimizzati. ### Algoritmo centralizzati - Up-Down (manager-worker) - Algoritmo euristico (probing) - Bidding ### Negoziazione La migrazione dei processi puó avvenire tramite una negoziazione in cui gli starter utility dei vari sistemi comunicano prima dello scambio di un processo. ### Eviction Puó capitare che una workstation vada in crisi e rimandi al mittente i processi che non siano i propri. ### Co-scheduling Spesso conviene migrare i processi in gruppo, ad esempio gruppi di processi che comunicano tra di loro possono essere schedulati per lo stesso time slot su macchine diverse, in modo che possano comunicare senza ritardi.