BEOWULF Cluester Linux/BSD
Transcript
BEOWULF Cluester Linux/BSD
BEOWULF Cluester Linux/BSD Nardo Guido 784169 Introduzione Negli anni passati, il mondo del Supercomputer inteso come clusters, è sempre stato dominato da architetture e software proprietario delle maggiori aziende leader del mercato con costi dei sistemi elevati. Con l' abbassarsi del costo dei personal computer venne creato un progetto di clustering basato sui sistemi operativi Linux e BSD. Nacque cosi' beowulf, grazie a Thomas Sterling e a Don Becker. Il principale punto di forza di questo cluster si basa sull’hardware: si poteva acquistare in qualsiasi negozio di PC periferiche e dispositivi ad un costo ragionevole. Beowulf fu' creato anche con lo scopo di riutilizzare workstation, magari inutilizzate, per costruire un cluster basato su linux. Caratteristiche Sfrutta un'architettura a multicomputer che puo` essere usata per calcoli paralleli. Il successo di questo cluster e' dovuto dal COTS (Commodity Off The Shelf) cioè la comodità di avere macchine comuni impiegate in calcoli distribuiti. L'evoluzione di questo cluster e' dovuta all'impiego di strumenti liberi quali sistemi operativi e applicazioni basati sulla filosofia GNU e all'utilizzo di librerie di message passing quale le PVM (Parallel Virtuale Machine) e le MPI (Message Passing Interface). Inoltre espande le caratteristiche di quelle che erano i COW: Cluster Of Workstations cioè un gruppo di workstation dotate di un software dedicato di clustering (comprese librerie, database, scheduler, periferiche etc). Tutti gli accessi ai nodi client avvengono remotamente. Solo il nodo server avra’ periferiche per il controllo locale. Si distingue anche da NOW (Network Of Workstations) perche’ si comporta come un singolo computer. Le principali libreri utilizzare PVM (Parallel Virtual Machine) E’ una delle librerie parallele tramite cui è possibile programmare un cluster di classe Beowulf. Permette ad un insieme eterogeneo di computers, collegati tramite una rete, di essere usati come un unico calcolatore parallelo. Possono essere affrontati problemi computazionali estremamente impegnativi utilizzando la potenza di molti computers e delle PVM. Anche i sorgenti di queste librerie sono disponibili liberamente. La PVM fornisce una gestione di un "pool" di risorse definibili dall'utente, offrendo una visione stabile e robusta dell'ambiente. L'accesso alle macchine tramite PVM è reso possibile da programmi scritti in C e in Fortran che accedono alle routines delle librerie. Le principali funzioni sono: • • • inizializzazione dei processi trasmissione e ricezione di messaggi sincronizzazione Viene gestito in maniera trasparente l'instradamento dei messaggi e la conversione di formati per i dati e per le diverse architetture. Queste librerie sono state sviluppate principalmente per la portabilita, trascurando le prestazioni. Tuttavia sono state sviluppate librerie più avanzate come le MPI. Sono stati sviluppati molti tools per monitorare il comportamento del PVM (debugger, performance, integrità, etc.) MPI (Messagge Passing Interface) Le API MPI sono state definite come standard per il “message passing”. Questo standard è stato creato perche’ diverse aziende di MPP (Massively Parallel Processor) stavano creando software proprietario per il messagging passing, rendendo quindi impossibile realizzare applicazioni portabili e libere, vincolando gli sviluppatori a specifiche architetture proprietarie. Sono state sviluppate per avere alte performance per i calcoli paralleli e rimpiazzare le obsolete PVM. Lo standard MPI e’ un insieme di routines per la comunicazione “peer-to-peer” e per gruppi di processi. Fornisce la possibilita’ di definire delle " topologie di comunicazione" particolari. Il problema principale delle MPI e’ dovuto al fatto che definisce solo uno standard. Esistono diverse implementazioni dello stesso standard che non sono compatibili tra loro. Un'applicazione realizzata con una delle implementazioni MPI non puo’ inviare messaggi ad un'altra realizzata con una diversa implementazione. Questo problema si puo’ risolvere utilizzando le PVM. Due differenti classificazioni I nodi del cluster sono dedicati, aumentando le performance del load balacing. Ci sono due diverse classificazioni di un cluster beowulf: Classe I Il cluster viene costruito completamente con hardware e componenti facilmente reperibili. I principali vantaggi sono: • • harware facilmente reperibile basso costo delle periferiche e devices • • • liberta’ architetturale supporto per driver (da comunità Linux / BSD) supporto di standard (OSI, IEEE) Classe II Il cluster viene costruito con un’achitettura proprieratia. Differisce dal primo solamente per un aumento delle prestazioni. Tuttavia ci sono degli svantaggi: • • • problematico supporto dei driver delle periferiche vendor dependence aumento del costo per la creazione del cluster Beowulf e’ stato progettato per avere una liberta’ progettuale qundi vengono costruiti principalmente cluster di Classe I. Caratteristiche di Scyld Don Becker ha fondato la Scyld Beowulf Cluster Operating System. Successiavente ha sviluppato la Scyld che e’ una distribuzione rehdat –base e le sue caratteristiche principali sono: • Facilita’ di utilizzo ed installazione: la procedura di installazione è identica a quella della distribuzione linux redhat, con un tool per configurare del nodo master. • Complessita’ di codice: Scyld Beowulf è richiesta solo sul nodomaster node. Gli slave node caricano le librerie necessarie dal nodo master durante la procedura di boot-up e in magrazione. • Migrazione: Scyld Beowulf immagazina le applicazioni sul master node. Al momento della esecuzione, le applicazioni sono migrate ai nodi computazionali. • Scalabilita’: supporto trasparente per l’aggiunta o la rimozione di nodi del cluster • Tools di amministrazione: Scyld include un tool semplificati per l’amministrazione e la manutenzione del cluster. Questa distribuzione aumenta le dimensioni e la complessità del kernel non degrandando le prestazioni del processore. Migrazione e gestione processi Beowulf Distributed Process Space sono delle regole e delle modifiche fatte al kernel, a librerie e ad utility per consentire ad un utente di eseguire un processo in un’altra macchina in Beowulf-stile. L’amministrazione remota e’ semplice, e viene gestita con le classiche syscall di UNIX (utilizzando meccanismi come la wait() ). Ogni macchina fa girare in locale un demone per interpretare la sintassi di Bproc. Bproc implementa un meccanismo per la creazione e la migrazione di processi remoti. Viene utilizzato il meccanismo della rexec, muovendo una classica syscall exec con un basso overhead. Le operazioni sono non-preemptive e non-transparent. Una volta migrato un processo, tutti i suoi file aperti vengono chiusi. Non è possibile per un processo, farne migrare un altro. Lo stato dei nodi puo’ essere: • down: il nodo non e’ connesso al master e/o il demone delle Bproc non funziona correttamente. Per risolvere questo problema bisogna intervenire manualmente sul nodo. • unavailable: il nodo non e’ raggiungibile dal master per qualche problema alla macchina o al software • error: il master node esegue lo script /etc/beowulf/node_up Dopodiché vengono settati i nodi considerati “up” e funzionanti. Gli altri nodi vengono messi in stato di error Ghost process: ogni processo remoto lascia traccia nel process tree del master. Occupano poche risorse e sono simili ai thread di kflushd e kswapd. Per la maggior parte del tempo sono processi che rimangono il “sleeping”. Si risvegliano per interagire con il nodo remoto per compiere delle operazioni quali la kill(), exit(), wait(). Masquerading del Process ID: I nodi slave accettano processi che migrano dal nodo master. Il problema sorge quando un processo migra e nel nodo master esiste un altro processo con lo stesso PID. Lo slave non controlla lo spazio di memoria trattato dai processi migranti. Questo problema viene risolto con il masquerading del PID. Bproc assegna un identificatore secondario al processo migrato e tutte le syscall si riferiranno al PID secondario. VMADump: Virtual Memory Area Dumper e’ il sistema che utilizza Bproc per migrare un processo in un nodo remoto. VMADump salva e ripristina lo spazio di memoria allocata dal processo. Lo streaming di informazioni avviane su socket TCP. Successivamente verranno deallocati tutti i suoi descrittori tranne lo STDOUT e lo STDERR. Molti programmami, a tempo di esecuzione, utilizzano mmap per ottenere le copie delle varie librerie di sistema che vengono utilizzate nella memory space. In passato programmi analoghi caricavano e mappavano tutte le librerie anche sen la maggior parte non venivano utilizzate. VMADump può evitare di copiare queste regioni di memoria quando migra un processo ad una macchina remota se siamo sicuri di garantire che le librerie siano linkate e presenti nella macchina remota. Invece di memorizzazione tutte le librerie, memorizza un riferimento alle locazioni. Quando l'immagine è ripristinata, tutti i file verranno rimappati nelle stesse posizioni di memoria. Le limitazioni di VMADump sono che non salva e ripristina tutte le informazioni dei file descriptor inoltre compie un “dump” su un singolo theard di un programma multithreading. Sicurezza Purtroppo beowulf non implementa un sistema efficiente per la sicurezza. I dati viaggiano con socket TCP in “chiaro” e non cifrati. Inoltre il nodo master ha anche la funzione di fare da gateway aumentando ulteriormente il dischio di attacchi dall’esterno. Link Home Page Beowulf: www.beowulf.org Standars MPI: www-unix.mcs.anl.gov/mpi/ Home Page PVM: www.csm.ornl.gov/pvm/pvm_home.html Scyld Home Page: www.scyld.com Beowulf Underground: www.beowulf-underground.org Bproc Home Page: bproc.sourceforge.net