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