Sistemi Operativi per Luigi Pomante Università degli Studi dell Aquila Centro di Eccellenza DEWS - DISIM luigi.pomante@univaq.it Sommario Introduzione Generalità Aspetti HW Architetture UMA Architetture NUMA Aspetti SW (SO) Generalità Tipologie di SO per Architetture Multiprocessore La Sincronizzazione nei Sistemi Multiprocessore Lo Scheduling nei Sistemi Multiprocessore Generalità Aspetti HW Tecnologie di Interconnessione Interfacce di Rete Aspetti SW (SO) La Comunicazione nei Sistemi Multicomputer Lo Scheduling nei Sistemi Multicomputer Bilanciamento del Carico nei SO per - 2013-2 - 2001 - Luigi Pomante 1
Sistemi Operativi per Introduzione Introduzione Da quando il computer è stato inventato c è sempre stata richiesta di una potenza di calcolo superiore a quella disponibile Processori con frequenza di clock più elevata Limitazioni fisiche Dimensioni Calore Un singolo calcolatore con più processori Applicazioni tipiche: Number Crunching» Multi-core == Sistema Multiprocessore on-chip (Chip-Level Multiprocessor)» I processori possono essere omo/eterogenei Più calcolatori (omo/eterogenei) collegati tra di loro e cooperanti Problema principale: la comunicazione» Network-on-Chip == Sistema Multicomputer on-chip (Chip-Level Multicomputer)» I calcolatori possono anche essere Multiprocessore omo/eterogenei SO per - 2013-4 - 2001 - Luigi Pomante 2
Introduzione Le differenti tecnologie di interconnessione danno origine a differenti tipologie di architetture di sistema Ad esempio: Sistema Multiprocessore a Memoria Condivisa Multicomputer a Scambio di Messagi Sistema Distribuito SO per - 2013-5 - Introduzione Sistema Multiprocessore a Memoria Condivisa 2..1000 CPU che comunicano tramite memoria condivisa Leggono e scrivono le stesse locazioni di memoria (2..10 ns) Implementazione alquanto complessa Alcuni vantaggi ed ottimizzazioni possibili per Multicore e SoC Se eterogenei più difficili da programmare Sistema Multicomputer a Scambio di Messagi Varie coppie CPU-Memoria Locale collegate tramite una rete ad alta velocità (10..50 µs) Più semplici da costruire ma più difficili da programmare Sistema Distribuito Sono sistemi multicomputer collegati tramite una WAN (Wide Area Network) Loosely-coupled vs. Tightly-coupled I tempi di comunicazione (10..100 ms) impongono una differente utilizzazione di questi sistemi SO per - 2013-6 - 2001 - Luigi Pomante 3
Sistemi Operativi per Generalità Aspetti HW Aspetti SW (SO) SO per - 2013-8 - 2001 - Luigi Pomante 4
Sistemi Operativi per Generalità Generalità Sono sistemi in cui 2 o più CPU hanno pieno accesso ad una memoria condivisa I programmi vedono lo stesso spazio di indirizzamento (virtuale) Un processore potrebbe fare una STORE e poi una LOAD nella stessa locazione di memoria e trovare un valore diverso perchè un altro processore l ha modificata Quando organizzata correttamente questa proprietà forma la base della comunicazione inter-processore A parte alcuni aspetti (sincronizzazione, scheduling) i SO per questi sistemi sono molto simili a quelli classici SO per - 2013-10 - 2001 - Luigi Pomante 5
Sistemi Operativi per Aspetti HW Aspetti HW Una differenza tra sistemi multiprocessore è legata alla capacità di poter accedere con tempi uniformi a tutte le locazioni di memoria UMA (Uniform Memory Acces) Architetture UMA basate su Bus Architetture UMA basate su Crossbar Switch Architetture UMA basate su Reti di Switch Multistadio NUMA (Not Uniform Memory Access) SO per - 2013-12 - 2001 - Luigi Pomante 6
Sistemi Operativi per Aspetti SW (SO) Architetture UMA Architetture UMA basate su Bus (<64 CPU) Bus singolo senza cache (a) Contesa per l accesso al bus Bus singolo con cache (L1-L2) (b) Coerenza della cache Tecniche di snooping Bus singolo con cache e memoria privata (c) Compilatori appositi Ancora UMA per quanto riguarda la parte condivisa SO per - 2013-14 - 2001 - Luigi Pomante 7
Architetture UMA basate su Crossbar Switch (<k*64 CPU) Permettono di superare le limitazioni imposte dal bus Collegamenti tra n CPU e k memorie (crosspoint) Pregio: Non-Blocking Network Se la memoria che ci interessa è disponibile Difetto: il numero di crosspoint cresce come n 2 SO per - 2013-15 - Arch. UMA basate su Reti di Switch Multistadio (<path*64 CPU) Usano reti costruite tramite switch 2x2 Pregio: ridotto numero di switch (Omega Switching Network) Il numero di switch cresce come (n/2)log 2 n Difetto: Blocking Network Maggior numero di switch e/o tecniche di interleaving SO per - 2013-16 - 2001 - Luigi Pomante 8
Sistemi Operativi per Aspetti SW (SO) Architetture NUMA Architetture NUMA Indispensabili in pratica per avere più di 100 processori Gli accessi remoti sono più lenti dei locali Esiste sempre un unico spazio di indirizzamento LOAD/STORE SW UMA == SW NUMA ma con prestazioni solitamente peggiori Limitare il degrado di prestazioni: uso di cache per limitare i tempi NC (Not-Cached): mapping spazio di indirizzamento su memorie locali CC (Cache-Coherent): directory-based multiprocessor» Message passing implicito e trasparente al SW e al programmatore SO per - 2013-18 - 2001 - Luigi Pomante 9
Sistemi Operativi per Aspetti SW (SO) Aspetti SW (SO) Generalità Tipologie di SO per Architetture Multiprocessore La Sincronizzazione nei Lo Scheduling nei SO per - 2013-20 - 2001 - Luigi Pomante 10
Sistemi Operativi per Aspetti SW (SO) Generalità Generalità Design Productivity Gap La tecnologia (HW) offre molto di più di quello che i progettisti (SW) riescono a sfruttare Difficoltà nello scrivere applicazioni che sfruttano davvero i sistemi multiprocessore Gli attuali linguaggi di programmazione, compilatori e relativi strumenti di debug non sono adatti per scrivere programmi massivamente paralleli» Librerie ad-hoc: MPI/OpenMPI, OpenCL, OpenMP, MCAPI I programmatori non hanno abbastanza esperienza di programmazione concorrente I meccanismi di IPC non sono adeguati per eliminare corse critiche ed evitare i deadlock senza penalizzare estrememente le prestazioni Quali applicazioni?» Problema di prestazioni o di algoritmo? SO per - 2013-22 - 2001 - Luigi Pomante 11
Sistemi Operativi per Aspetti SW (SO) Tipologie di SO per Architetture Multiprocessore Tipologie di SO per Architetture Multiprocessore Ogni CPU con il suo SO (AMP) Master-Slave Simmetrici (SMP) Soluzioni ibride SMP/AMP SO per - 2013-24 - 2001 - Luigi Pomante 12
Tipologie di SO per Architetture Multiprocessore Ogni CPU con il suo SO (replicate solo le strutture dati) Chiamato anche Asymmetric Multi-Processing Pregi Semplice: porzione di memoria privata ed estendibile Condivisione di risorse (es. Dischi) Comunicazioni inter-processore efficienti Difetti Non c e condivisione di processi: carico sbilanciato Non c e condivisione di pagine: spreco di memoria e risorse Problemi di consistenza dei buffer per i dispositivi di I/O Tecnica usata inizialmente per effettuare rapidamente il porting Oggi usata soprattutto per sistemi eterogenei SO per - 2013-25 - Tipologie di SO per Architetture Multiprocessore Master-Slave Pregi Solo la CPU Master ha il SO» Raccoglie ed esegue tutte le chiamate di sistema» Si occupa di smistare i processi: carico bilanciato Condivisione di pagine Una sola copia dei buffer per i dispositivi di I/O Difetti Il problema è che al crescere del numero di CPU (>5) il Master diventa rapidamente un collo di bottiglia SO per - 2013-26 - 2001 - Luigi Pomante 13
Tipologie di SO per Architetture Multiprocessore Simmetrici Symmetric MultiProcessor (SMP) LOCK Pregi Esiste una sola copia di SO in memoria ma ogni CPU lo può eseguire» Ogni CPU esegue le proprie chiamate di sistema Processi e memoria vengono bilanciati dinamicamente Difetti Necessità di eseguire il SO in mutua esclusione: LOCK» Accesso al SO: collo di bottiglia!» E necessario dividere il SO in parti indipendenti accessibili in parallelo» E un operazione complessa e problematica SO per - 2013-27 - Tipologie di SO per Architetture Multiprocessore Soluzioni ibride SMP/AMP Take advantage of multicore with a multi-os software architecture Stephen Olsen, Wind River Systems - October 6, 2013 http://www.embedded.com/print/4422211 SO per - 2013-28 - 2001 - Luigi Pomante 14
Sistemi Operativi per Aspetti SW (SO) La Sincronizzazione nei La Sincronizzazione nei La sincronizzazione tra i processori è fondamentale, soprattutto per quanto riguarda l accesso esclusivo a risorse critiche Non basta più disabilitare gli interrupt Non è più possibile basarsi su istruzioni assembly tipo TSL (o RMW) La TSL deve poter fare un lock anche sul bus» Ciò causa spreco di risorse e sovraccarico (spin lock) Esistono vari algoritmi per ridurre lo spreco di risorse Tentativi ritardati, liste di attesa, etc. SO per - 2013-30 - 2001 - Luigi Pomante 15
Sistemi Operativi per Aspetti SW (SO) Lo Scheduling nei Lo Scheduling nei Cosa viene schedulato? Processi mono-thread e user-thread vs kernel-thread Utilizzeremo genericamente il termine thread Dove? Esistono relazioni tra i thread da considerare? Lo Scheduling nei è un problema bidimensionale: il SO deve decidere quale thread eseguire e su quale CPU eseguirlo Timesharing Space Sharing Gang Scheduling SO per - 2013-32 - 2001 - Luigi Pomante 16
Lo Scheduling nei Timesharing Senza considerare le dipendenze tra thread si può utilizzare una singola tabella dei thread per tutto il sistema Ogni processore libero esegue il successivo thread pronto (selezionato in base ad una qualche politica, es. priorità) SO per - 2013-33 - Lo Scheduling nei Timesharing Pregi: semplicità e bilanciamento del carico Difetti Contesa per l accesso alla Tabella dei Thread Potenziale blocco di altre CPU in caso di spin lock Poco sfruttamento di cache e TLB del processore Miglioramenti Smart Scheduling: permettere ad un thread che ha un lock sul bus di poter essere eseguito per un tempo maggiore del suo quanto di tempo Affinity Scheduling: cercare di eseguire un thread sull ultimo processore che l ha eseguito Two-level Algorithm: un gruppo di thread è assegnato ad una CPU che li gestisce con una struttura dati dedicata Quando una CPU è idle prende un thread da qualcun altra» Bilanciamento del carico» Massimizzazione della cache affinity» Riduzione della contesa per la Tabella dei Thread SO per - 2013-34 - 2001 - Luigi Pomante 17
Lo Scheduling nei Space Sharing Un gruppo di k thread correlati viene assegnato a k CPU disponibili Concetto di lista delle CPU disponibili In ogni istante l insieme di CPU è staticamente partizionato in gruppi che eseguono thread tra loro correlati (ad esempio che comunicano molto)» Le singole CPU possono anche essere dedicate ad un solo thread (no multitasking!) Lo Space Sharing elimina o riduce l overhead del cambio di contesto ma le CPU possono rimanere idle per molto tempo» Buono per lavori batch dove si conoscono bene le relazioni tra i processi SO per - 2013-35 - Lo Scheduling nei Gang Scheduling Non considerando le relazioni tra i thread si possono avere inefficienze dovute alle comunicazioni Alcuni algoritmi cercano di effettuare in contemporanea lo scheduling nel tempo e nello spazio tenendo in considerazione le dipendenze/relazioni tra i thread SO per - 2013-36 - 2001 - Luigi Pomante 18
Lo Scheduling nei Gang Scheduling: ha come obbiettivo quello di eseguire in contemporanea thread correlati Gruppi di thread correlati (gang) sono schedulati in modo indivisibile I membri di una gang sono eseguiti simultaneamente in timesharing da più processori I membri di una gang hanno i time slice coincidenti» Allo scadere di ogni quanto tutte le CPU sono ri-schedulate» Se un thread si blocca, la CPU aspetta in idle lo scadere del quanto SO per - 2013-37 - Sistemi Operativi per 2001 - Luigi Pomante 19
Generalità Aspetti HW Aspetti SW (SO) SO per - 2013-39 - Sistemi Operativi per Generalità 2001 - Luigi Pomante 20
Generalità I offrono un semplice modello per la comunicazione ma al crescere del numero di processori sono difficili da costruire e quindi molto costosi Sono quindi nati i composti da CPU lascamente accoppiate che non condividono memoria Cluster Computer Cluster of Workstation (COWS) Si tratta in pratica di normali calcolatori collegati da una rete di interconnessione Il problema questa volta è progettare efficacemente tale rete e le interfacce di rete Il compito è meno arduo rispetto a perchè i tempi in gioco sono di un ordine di grandezza superiore» Il discorso è un po più complesso per i NoC SO per - 2013-41 - Sistemi Operativi per Aspetti HW 2001 - Luigi Pomante 21
Aspetti HW Il nodo base di un Multicomputer consiste in uno o più processori, memoria, un interfaccia di rete e (alle volte) un hard disk Tecnologie di Interconnessione Interfacce di Rete SO per - 2013-43 - Sistemi Operativi per Aspetti HW Tecnologie di Interconnessione 2001 - Luigi Pomante 22
Tecnologie di Interconnesione Ogni nodo è connesso ad altri nodi o a degli switch secondo una determinata topologia Topologie Classiche Stella (a) Anello (b) Grid o Mesh (c)» Scalabile» Diametro = f(n 1/2 ) Doppio Toro (d)» Tollerante ai guasti Cubo (e) Ipercubo (f)» Diametro = f(log 2 n) SO per - 2013-45 - Tecnologie di Interconnesione Stategie di Switching A pacchetto Si trasferisce un pacchetto (per intero) alla volta Store-and-forward Packet Switching» Flessibile ed efficiente ma latenza cresce con la dimensione della rete A circuito Percorso predeterminato Non ci sono salvataggi intermedi» Occorre una fase di setup Wormhole Routing E una via di mezzo tra le prime due strategie» Un pacchetto è diviso in pezzi più piccoli che fluiscono man mano che il percorso viene stabilito SO per - 2013-46 - 2001 - Luigi Pomante 23
Sistemi Operativi per Aspetti HW Interfacce di Rete Interfacce di Rete Il modo con cui sono costruite e come interagiscono con CPU e RAM influiscono notevolmente sul SO In genere sono dotate di RAM a bordo per mantenere un flusso continuo di bit durante la trasmissione/ricezione dei dati Possono anche avere controller DMA e/o CPU a bordo Network Processors» Gestione trasmissione affidabili, multicasting, de/compressione, encryption/decryption, protezione in sistemi multitasking SO per - 2013-48 - 2001 - Luigi Pomante 24
Sistemi Operativi per Aspetti SW (SO) Aspetti SW (SO) La Comunicazione nei Lo Scheduling nei Bilanciamento del Carico nei SO per - 2013-50 - 2001 - Luigi Pomante 25
Sistemi Operativi per Aspetti SW (SO) La Comunicazione nei La Comunicazione nei Comunicazione di Basso Livello Attività critica: copia dei pacchetti! Minimizzare le copie dei pacchetti Interfaccia di rete mappata in user-space» Problemi di condivisione tra processi» Problemi di mapping indirizzi fisici/virtuali con DMA» Problemi di accesso da parte del kernel (doppia interfaccia di rete) SO per - 2013-52 - 2001 - Luigi Pomante 26
La Comunicazione nei Comunicazione di Livello Utente I processi si scambiano messaggi tramite opportune chiamate di sistema Send and Receive» In questo modo la comunicazione è esplicitamente gestita dall utente» N.B. Tecnica utilizzabile anche per i Multiprocessore Queste comunicazioni possono essere blocccanti (sincrone) o non bloccanti (asincrone) Nel secondo caso l elaborazione può continuare a patto di non usare il buffer contenente il messaggio spedito/ricevuto fino a trasferimento completato Servono dei meccanismi per avvisare che il buffer è utilizzabile» Es. interrupt, pop-up thread, active message SO per - 2013-53 - La Comunicazione nei Remote Procedure Call (RPC) Offrono un paradigma diverso da quello basato sull I/O Chiamate a procedure residenti su un altro calcolatore» Normale passaggio di parametri» I processi utente fanno chiamate a procedura locali al client stub (che gira in spazio utente)» Tali procedure hanno lo stesso nome di quelle server e si occupano del vero I/O» Operazioni di send/receive implicite e trasparenti Problemi con passaggio di puntatori, tipizzazione debole e variabili globali SO per - 2013-54 - 2001 - Luigi Pomante 27
La Comunicazione nei Distributed Shared Memory (DSM) Permette di mantenere il concetto di memoria condivisa Con la DSM le pagine sono dislocate nelle varie memorie locali Quando una CPU effettua una load (store) su una pagina che non ha, avviene una chiamata al sistema operativo che provvede a recuperarla facendosela spedire appena possibile» Page fault remoto Ottimizzazioni» Replicare le pagine (coerenza!) Differenze con la vera Shared Memory (a)» Gestione HW (b)» Gestione SW (SO) SO per - 2013-55 - Sistemi Operativi per Aspetti SW (SO) Lo Scheduling nei 2001 - Luigi Pomante 28
Lo Scheduling nei Nei tutti i processi risiedono nella stessa memoria e potenzialmente ogni CPU può eseguirne uno qualunque Nei ogni CPU ha un certo insieme di processi da eseguire e non è fattibile (per l elevato costo della comunicazione) uno scambio dinamico di questi In pratica lo scheduling è locale e quindi quello classico Diventa però fondamentale l allocazione dei processi sui vari nodi ai fini del bilanciamento del carico e della minimizzazione delle comunicazioni inter-nodo SO per - 2013-57 - Bilanciamento del Carico nei E di estrema importanza proprio perchè lo scheduling locale non permette (facilmente) di intervenire a posteriori Fondamentale differenza con i Processor Allocation Algorithm Graph-Theoretic Deterministic Algorithm Sender-Initiated Distributed Heuristic Algorithm Receiver-Initiated Distributed Heuristic Algorithm SO per - 2013-58 - 2001 - Luigi Pomante 29
Bilanciamento del Carico nei Graph-Theoretic Deterministic Algorithm Si basano su stime dei requisiti di CPU e memoria da parte dei processi e di traffico medio sulla rete Cercano l allocazione che minimizza il traffico sulla rete Teoria dei grafi: insiemi di taglio tali da soddisfare dei vincoli (CPU e memoria) e minimizzarne altri SO per - 2013-59 - Bilanciamento del Carico nei Sender-Initiated Distributed Heuristic Algorithm Quando un processo viene creato esso è eseguito localmente a meno che il nodo in questione non sia sovraccarico Il carico è calcolato con opportune metriche Se il nodo è sovraccarico questo contatta altri nodi (a caso) e se ne trova uno con il carico più basso del suo gli spedisce il nuovo processo Dopo k tentativi vani il processo è eseguito localmente SO per - 2013-60 - 2001 - Luigi Pomante 30
Bilanciamento del Carico nei Receiver-Initiated Distributed Heuristic Algorithm E duale al precedente: quando un processo termina e il carico e basso, il nodo contatta (a caso) altri nodi in cerca di processi da eseguire Dopo k tentativi smette di chiedere In questo modo sistemi già carichi non sono costretti a fare lavoro in più per cercare collaboratori Si crea molto traffico quando il sistema è molto scarico Si possono combinare i due algoritmi Offerte e richieste simultanee Alternativa migliore alla ricerca casuale Elenco dei nodi spesso sovraccarichi Elenco dei nodi spesso liberi SO per - 2013-61 - Sistemi Operativi per Riferimenti 2001 - Luigi Pomante 31
Riferimenti Riferimenti Modern Operating Systems (3 a edizione, 2007), A. Tanenbaum Capitolo 8, Multiple Processor Systems SO per - 2013-63 - 2001 - Luigi Pomante 32