Thread: aspetti architetturali
Transcript
Thread: aspetti architetturali
Thread Alcuni aspetti architetturali Schemi realizzativi Modello sequenziale One program one process One program one process language runtime system language runtime system Operating System Kernel TIGA 41 Schemi realizzativi Linguaggio concorrente senza supporto del SO One program many threads One program many threads language runtime system language runtime system Operating System Kernel TIGA 42 Schemi realizzativi Linguaggio concorrente con supporto del SO One program many threads One program many threads language runtime system language runtime system Operating System Kernel TIGA 43 Throughput: multi-thread (monoprocessore) Processo server gli accessi al disco sono sequenziali Tc = tempo di calcolo (es., 2 ms); Ta = tempo di accesso al disco (es., 8 ms) Elapsed Time = Te = Tc + Ta = 2 + 8 = 10 ms THROUGHPUT,T (singolo elaboratore) Singolo thread TS = 1/Te = 100 richieste/s Multi-thread (due thread) TM = 1/Ta = 125 richieste/s TIGA 44 Throughput: multi-thread (monoprocessore) Speedup Tc 2 F = = = 0.2 1 1 e T 10 ⇒ So = = = 1.25 e 1 − Fe 0.8 S → ∞ e È la parte sequenziale del programma (1-Fe) che fissa le prestazioni Non c'è vantaggio (teorico) ad aumentare il grado di parallelismo (Se → ∞) TIGA 45 Throughput: cache cache gli accessi al disco sono sequenziali • Ts = tempo di ricerca in cache (es., 0.5 ms); • h = hit rate in cache (es., 75%) Te = Tc + Ta = 2 + 8 = 10 ms h × T a 0.75 × 8 = = 0.6 Fe = T 10 1 1 1 e ⇒S = = = = 2.22 0.6 F 0.45 h T × 0.75 8 × a S = (1 − Fe ) + e 0.4 + 12 = = 12 Se e 0.5 Ts TIGA 46 Throughput: multi-thread con cache (monoprocessore) h = hit rate in cache (75%) Ts = tempo di ricerca in cache (0.5 ms) cache Tempo medio di accesso al disco: Ta′ = (1 − h )Ta = 2 ms Elapsed time medio: Te′ = (Tc + Ts ) + Ta′ = Tc′ + Ta′ = 4.5 ms ′ Tc THROUGHPUT (single-thread) T S = 1 ′ 222 richieste/s Te T M = 1 = 400 richieste/s (multi-thread) Tc′ TIGA 47 Throughput: multi-thread con cache (monoprocessore) ipotesi semplificativa: cache e multi-thread sono indipendenti Speedupcache Speedupmulti Speeduptotale ′ h × T a 0.75 × 8 = = 0.6 Fe = T 10 e ⇒ S o′ = 2.22 × h T 0.75 × 8 a S ′ = = = 12 e 0.5 Ts 2 ′′ T c = = F e T e ′ 4.5 ⇒ S 0′′ = 1 = 4.5 = 1.8 1 − Fe ′′ 2.5 ′ → ∞ S e 1 4.5 × =4 S o = S o ′ × S 0′′ = 0.45 2.5 TIGA 48 Throughput: multi-thread con cache (monoprocessore) multi-thread senza cache Ta elaborazione attesa I/O multi-thread con cache Tc′ = Te′ − Ta′ Tc TIGA Ts Ta′ 49 Throughput (biprocessore) server host, biprocessore a memoria condivisa cache gli accessi al disco sequenziali TS = 2 × 1 (T ′ + T + T ) a TM = c 444 richieste/s (due thread, un thread per processore) s 1 = 500 richieste/s ′ Ta (due thread per processore) TIGA 50 Schemi temporali (biprocessore) MULTITHREAD CON CACHE (due thread/processore) Ta′ TIGA Ta′ Ta′ 51 Architetture di server multi-thread pool di N worker thread POOL DI THREAD coda richieste oggetti I/O Vantaggi thread semplicità gestione su base prioritaria delle richieste Svantaggi limitata flessibilità dovuto al numero N fisso dei thread overhead dovuto alla coda richieste TIGA 52 Architetture di server multi-thread UN THREAD PER RICHIESTA worker thread • Si crea un thread per ogni richiesta. • Si distrugge il thread non appena ha servito la richiesta oggetti I/O thread Vantaggi non c’è l’overhead della coda richieste il numero di thread non è limitato Svantaggi overhead dovuto alla creazione ed alla distruzione dinamica dei thread TIGA 53 Architetture di server multi-thread UN THREAD PER CONNESSIONE worker thread Si crea un worker thread quando il cliente stabilisce una connessione e lo si distrugge quando la connessione viene chiusa oggetti Su una connessione possono arrivare richieste per qualunque oggetto Vantaggi: si riduce l’overhead della creazione/distruzione dinamica dei thread; Svantaggi: un thread può avere richieste pendenti mentre altri thread sono inattivi TIGA 54 Architetture di server multi-thread UN THREAD PER OGGETTO worker thread Si crea un worker thread per ciascun oggetto. L’I/O thread inoltra le richieste agli worker thread oggetti I/O thread coda richieste Vantaggi: elimina l’overhead della creazione/distruzione dinamica dei thread Svantaggi: un thread può avere richieste pendenti mentre altri thread sono inattivi TIGA 55 Thread vs Processi Sia i thread sia i processi permettono di incrementare il grado di multiprogrammazione permettono di sovrapporre l’elaborazione all’I/O permettono l’esecuzione concorrente sui multiprocessori Tuttavia, rispetto ai processi, i thread facilitano la condivisione delle risorse (memoria condivisa) sono più efficienti da gestire: la creazione ed il context switch sono più efficienti con i thread che con i processi (≅ rapporto 1:10) TIGA 56