Sei sulla pagina 1di 18

Impianti Informatici - Formulario e Riassunto

Alessio Massetti
31 Agosto 2013

Indice
I Esercizi

1 Performance

1.1

Legge dell'utilizzo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2

Legge di Little

1.3

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.1

Forma alternativa per sistemi non batch . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.2

Formula alternativa per il Throughput del sistema

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Sistemi Multicomponente

2 Dischi

2.1

Tempo di lettura di un le da disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2

Tempo di lettura di un settore del disco

2.3

Seek Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3.1

Momento Secondo del Seek Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3.2

Varanza del Seek Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4

Rotation Time

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4.1

Valore atteso della Rotazione

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4.2

Momento secondo della Rotazione

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 SSD

4
4
5

3.1

Tempo di trasferimento di una pagina

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.2

Tempo di trasferimento dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.3

Numero di pagine da trasferire

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.4

Tempo di trasferimento totale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 Performance

4.1

Disponibilit (Availability) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.2

Adabilit (Reliability)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.3

Serie e Parallelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.4

Min time to Failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 RAID

5.1

RAID 0

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.2

RAID 1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6
6

5.3

RAID 1+0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.4

RAID 0+1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.5

RAID 5

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.6

RAID 6

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6 Cache

II Teoria

7 Adabilit

7.1

Funzione di guasto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.2

Inadabilit

7.3

Adabilit

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.4

Bound Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8 Dierenze tra RAID 0+1 e RAID 1+0

9 Virtualizzazione

9.1

Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.2

Concetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Altri tipi di virtualizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.3

9.3.1

Emulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.3.2

Para-virtualizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.3.3

Virtualizzazione a livello di Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.4

Propriet della Virtualizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.5

Conseguenze della virtualizzazione

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.6

Modello di Popek & Goldberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

9.6.1

10

Problema con gli x86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10 Cloud Computing

11

10.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

10.2 Paradigmi di Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

10.2.1 Infrastructure as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

10.2.2 Software as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

10.2.3 Platform as a Service

11

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11 Architetture Parallele

11

11.1 Introduzione al parallelismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

11.2 Speed-up e legge di Amdhal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

11.3 Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.3.1 Super linear Scaling

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11.3.2 Strong vs Weak Scaling


11.4 SIMD

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12
13
13

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

11.4.1 Architetture Vettoriali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

11.4.2 GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

11.5 MIMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.5.1 Memoria Condivisa nelle MIMD

14

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

11.5.2 Cache coerency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

11.5.3 Cache Coerency Misses

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11.5.4 Primitive di sincronizzazione

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15
15

11.5.5 Consistenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

11.5.6 Memoria distribuita

16

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12 Sistemi di Storage

16

12.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

12.1.1 Motivazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

12.1.2 Requisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

12.2 DAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

12.3 NAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

12.4 SAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

12.4.1 Protocolli SAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

12.4.2 Topologie SAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

12.4.3 SAN + NAS Head

17

12.4.4 iSCSI

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12.4.5 Fiber Channel Over IP

17

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

12.4.6 Fiber Channel Over Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

12.5 Virtualizzazione dello Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

12.5.1 Cloud Storage

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

Parte I

Esercizi
1 Performance
1.1 Legge dell'utilizzo
U =X S
Dove:
U = % di utilizzo del componente
X = throughput del componente
S = tempo di servizio del componente

1.2 Legge di Little


N =X R
Dove:
N = numero di utenti serviti
X = throughput del sistema
R = tempo di residenza del sistema

1.2.1 Forma alternativa per sistemi non batch


N = X (R + Z)
Dove:
N = numero di utenti serviti
R = tempo di risposta del sistema
Z = think time del sistema

1.2.2 Formula alternativa per il Throughput del sistema


X=

C
T

V =

Xi
X

Dove:
C = transazioni completate
T = tempo medio per transazione

1.3 Sistemi Multicomponente

R=

n
X
i=1

Dove:
V = Visite del sistema

Xi

= throughtput del componente i-esimo

X = throughput totale del sistema


R = tempo di risposta del sistema

Xi Vi

2 Dischi
2.1 Tempo di lettura di un le da disco
TDISCO = TSET T ORE NSET T ORI
Dove:

TSET T ORE
NSET T ORI

= tempo di lettura di un settore


= numero di settori che occupa il le su disco

2.2 Tempo di lettura di un settore del disco


TSET T ORE = E [ST ] + E [RT ] + OV H + TT
Dove:

E [ST ]= valore medio del Seek Time


E [RT ]= valore medio del tempo di Rotazione
OV H = overhead
TT = valore medio del tempo di Rotazione

2.3 Seek Time



E [ST ] = (1 LOC)

min + max
2

Dove:
LOC = la localit dei dati
min = il valore minimo del seek time
max = il valore massimo del seek time

2.3.1 Momento Secondo del Seek Time



M2(ST ) = (1 LOC)

min2 + max2 + min max


3

Dove:
LOC = la localit dei dati
min = il valore minimo del seek time
max = il valore massimo del seek time

2.3.2 Varanza del Seek Time


V ar(ST ) = M2(ST ) E 2 [ST ]

2.4 Rotation Time


RT =

60 103
VR

Dove:
Al numeratore ci sono i millisecondi in un minuto

VR

= velocit di rotazione del disco in rpm

2.4.1 Valore atteso della Rotazione


E [RT ] = (1 LOC)

RT
2

Dove:
LOC = la localit dei dati
La divisione per 2 perch mi attendo nel peggiore dei casi di fare mezzo giro

2.4.2 Momento secondo della Rotazione


M2(RT ) = (1 LOC)

RT2
3

Dove:
LOC = la localit dei dati

RT

= Rotation time

3 SSD
3.1 Tempo di trasferimento di una pagina
TT RASF p = TT RASF b SIZEP
Dove:

TT RASF b il tempo di trasferimento di


SIZEP la dimensione della pagina

un Byte

3.2 Tempo di trasferimento dei dati


TT RASF d = max (TT RASF p , TREADp )
Il tempo di trasferimento il massimo tra quello di lettura e di scrittura.

3.3 Numero di pagine da trasferire


np =

SIZEf ile
SIZEp

Dove il risultato va arrotondato all'intero superiore.

3.4 Tempo di trasferimento totale


TSSD = TOV H + TREADp + TT RASF p + (np 1) TT RASFd

4 Performance
4.1 Disponibilit (Availability)
A=

MTTF
MTTF + MTTR

Dove:
MTTF = Mean time to Failure
MTTR = Mean time to Repair

4.2 Adabilit (Reliability)


R (t) = et
Dove

1
M T T F il failure rate. Vale solo se lambda costante.

4.3 Serie e Parallelo


Nota: le seguenti formule valgono sia per A, sia per R.

n
Y

Aserie =

Ai

i=1

n
Y

Aparallelo = 1

(1 Ai )

i=1

4.4 Min time to Failure


+

MTTF =
R (t) dt
0
Applicazione veloce: se la formula del tipo

e x

Il risultato dell'integrale sar

5 RAID
5.1 RAID 0
M T T DL =

MTTF
n

ndati = n

5.2 RAID 1
MTTF2
2 MTTR

M T T DL =

ndati =

n
2

5.3 RAID 1+0


MTTF2
2 MTTR

M T T DL =

ndati =

n
2

5.4 RAID 0+1


M T T DL =

2 MTTF2
n2 M T T R

ndati =

n
2

5.5 RAID 5
M T T DL =

MTTF2
n (n 1) M T T R

ndati =

n1
n

5.6 RAID 6
M T T DL =

2M T T F 3
n (n 1) (n 2) M T T R2

ndati =

n2
n

Dove n il numero di dischi utilizzati

6 Cache
Si lavora di probabilit partendo da

preg = 1

A questo punto, la probabilit del livello inferiore cos denita

pi = pi1 mi1
Dove

mi1

il miss rate del livello superiore e

pi1

la probabilit del livello superiore.

se nel secondo livello avessi un miss rate del 15% e nel terzo del 10% avrei

p3 = 0, 1 0, 15 = 0, 015 = 1, 5%
Il tempo semplicemente

t=

pi ti

Ad esempio,

p2 = 1 0, 15 = 0, 15 = 15%,

Parte II

Teoria
7 Adabilit
7.1 Funzione di guasto
f (t)

= funzione di probabilit di guasto

7.2 Inadabilit

F (t) = 1

f (x) dx
0

7.3 Adabilit
R(t) = 1 F (t)

7.4 Bound Analysis


Devo calcolare

DT OT =

Di =

Si Vi

R N DT OT
X DTNOT e X DT1OT
N
ricavo: X
DM AX dove DM AX

Upper Bound per il tempo di risposta:


Con la legge di Little ricavo:
Con la legge dell'utilizzo

il

Di

maggiore

Tenendo conto della forma alternativa della legge di Little, per sistemi col think time:

1
N DT OT +Z
E per il tempo di risposta

N
DT OT +Z e

R N DM AX Z

8 Dierenze tra RAID 0+1 e RAID 1+0


Nel RAID 0+1 viene prima eettuato lo striping dei dati, poi il mirroring di questi. Nel caso si guasti un singolo
hard disk, quindi, il sistema si porta in congurazione RAID 0 con la duplicazione dei dischi che porta ad un
overhead elevato. Nel RAID 1+0 l'operazione invece esattamente l'opposto.

Fault tolerance:

nella congurazione RAID 0+1 suciente perdere un disco in entrambi i set per

avere il fallimento di tutto il sistema poich non interviene il sistema di riparazione errori. Nel RAID 1+0
invece necessario che si guastino entrambi i dischi di un mirror.

Performance:

le prestazioni in assenza di guasto sono identiche in entrambe le congurazioni - cambiano

quando si verica un problema ad un disco poich in RAID 0+1 in caso di fallimento l'intero sistema deve
operare come RAID 0 mentre nel caso RAID 1+0 porta ad operare in RAID 0 solo il set di cui il disco
faceva parte.

Recovery:

in caso di ripristino in seguito ad un guasto, nel caso RAID 0+1 va sostituito il disco ed

eettuato il mirror di tutto l'insieme, nel caso del RAID 1+0 avendo gi il mirroring di ogni disco devo
eetturare solo quello del disco rimasto.
In generale, quindi, il RAID 1+0 superiore al RAID 0+1.

9 Virtualizzazione
9.1 Introduzione
La virtualizzazione d la possibilit di utilizzare applicazioni, sistemi operativi e dispositivi diversi su ambienti
diversi da quello per cui sono stati progettati. Il mapping pu avvernire 1-1, 1-tanti (es. Raid), tanti-1 (es.
Memoria Virtuale)

Desktop Virtualization:

capacit di visualizzare un Desktop su un altro.

Le workstation sono quindi

gestite dalle compagnie e ci sono diversi vantaggi di sicurezza

Operative System Virtualization: virtualizzazione di uno o pi sistemi operativi eseguiti da un singolo


core. Le varie macchine virtuali sono isolate: ogni macchina pu accedere solo ai propri le.

Server & Machine Virtualization: isolare diverse aree che contengono delle congurazioni di rete desiderate.
E' possibile che un componente appartenga a pi aree

9.2 Concetti
Guest OS:
Host OS:

il sistema operativo installato sulla macchina virtuale

il sistema operativo sul quale installato il programma di gestione delle macchine virtuali

Virtual Machine Manager:

programma di gestione di macchine virtuali. Media l'accesso alle risorse

di sistema e gestisce l'esecuzione di istruzioni privilegiate.

Hypevisor:

chiamato anche Virtual Machine Monitor il programma che crea, congura e mantiene le

risorse virtualizzate. Ha come funzioni principali quelle di identicare, trappare e proteggere le operazioni
CPU fatte con la virtual machine, gestisce la coda delle richieste di queste.




Tipo 1: d direttamente il controllo dell'hardware


Tipo 2: sta con un sistema operativo host e n gestisce il codice di controllo

9.3 Altri tipi di virtualizzazione


9.3.1 Emulazione
Serve per far andare un sistema operativo su una piattaforma diversa rispetto a quella per cui era originariamente
previsto. La principale dierenza con la virtualizzazione che le applicazioni e il guest OS non possono andare
sull'hardware sico: la risorsa mappata su una risorsa virtuale con la stessa interfaccia

9.3.2 Para-virtualizzazione
Vengono astratte le periferiche con cui si comunica tramite Virtual Hardware API: l'interfaccia simile a quella
del sistema operativo, ma non uguale - in questo modo si ottimizzano i task di virtualizzazione dell'ambiente.

9.3.3 Virtualizzazione a livello di Kernel


La virtualizzazione accade a livello di sistema operativo. Non c' un Guest OS, sostituito da server privati: si
hanno quindi le performance del sistema operativo nativo ma serve modicare gli host

9.4 Propriet della Virtualizzazione


Partizione di risorse:

esecuzione concorrente di pi sistemi operativi su una sola macchina

Isolamento delle risorse:

aumento di sicurezza e di controllo delle stesse

Incapsulamento delle risorse:

l'intero stato di una macchina virtuale pu essere salvato e copiato via

le.

9.5 Conseguenze della virtualizzazione


Il software strettamente legato all'hardware: la congurazione ottimale di un server, un sistema operativo ed
una applicazione. Poca essibilit: non posso installare pi applicazioni perch rischio che una voglia accedere
a tutte le risorse impallandomi il server. Con la virtualizzazione ho una indipendenza hardware/software quindi
posso mettere pi applicazioni su un singolo server.

9.6 Modello di Popek & Goldberg


Discute i requisiti per virtualizzare un

intero

set di architetture. La macchina da prendere in considerazione

viene quindi descritta in questo modo

stato pu essere utente (U) o supervisore (S)

Lo

Ha dei

Ha un suo

Problema:

margini di allocazione di memoria di dimensione B a partire da un primo indirizzo L. (L;L+B)


program counter e una sua memoria

sotto alcune condizioni alcune istruzioni possono andare in

trap,

ovvero possono chiamare delle

istruzioni (basti pensare al lancio di una eccezione) che non sono all'interno del programma di conrollo dovendo
quindi accedere a degli indirizzi fuori dai memory bound. Per ovviare al problema, quindi, dobbiamo dividere
le istruzioni in

Istruzioni privilegiate.

Sono privilegiate le istruzioni che vanno in trap

se e solo se

eseguite in User

mode ad esclusione dei trap di memoria

Istruzioni sensibili al controllo.

Sono le istruzioni che possono cambiare i margini di allocazione di

memoria.

Istruzioni sensibili al comportamento.

Sono le istruzioni che si comportano in maniera dierente a

seconda dei margini di allocazione di memoria o a seconda del modo

programma di controllo per macchine virtuali quindi un programma che soddisfa i seguenti requisiti
Ecienza: tutte le istruzioni non sensibili vengono eseguite dirrettamente dall'hardware senza l'intervento

Una

del programma di controllo

Controllo di risorse:
Equivalenza:

gli ospiti non possono modicare le proprie risorse di sistema

l'esecuzione deve essere indistinguibile rispetto a quella dell'hardware reale

Come pu il programma di controllo soddisfare queste propriet?

Per soddisfare il controllo di risorse deve prevenire che le istruzioni sensibili al controllo modichino i
limiti di memoria o cambino lo stato della macchina

Per soddisfare l'equivalenza bisogna modicare le istruzioni sensibili al comportamento in modo che si
comportino come se fossero state eseguite senza una macchina virtuale

Per soddisfare l'ecienza il programma di controllo deve prendere il controllo solamente quando una
istruzione sensibile al controllo eseguita dentro una macchina virtuale.

Teorema di Popek e Goldberg

Un programma di controllo pu essere costruito se e solo se il set di

istruzioni sensibili un subset di quello di istruzioni privilegiate.


La dimostrazione del teorema si ha esponendo le modalit su come costruire un Virtual Machine Manager:

De-Privileging:

tutto il codice viene eseguito in user mode, quindi

Tutte le istruzioni in questo modo vanno in trap e

Il VMM pu

anche le istruzioni privilegiate.

passano il controllo al Virtual Machine Manager

emulare il comportamento dell'istruzione di controllo.

L'approccio anche detto

trap-and-emulate

9.6.1 Problema con gli x86


L'architettura x86 non virtualizzabile con trap-and-emulate. I problemi sono essenzialmente due

Visibilit dello stato privilegiato:

leggere il segmento codice pu rivelare alla macchina che non sta

andando in modalit supervisore. Non quindi possibile emulare le istruzioni e far credere alla macchina
che stia andando in supervisor mode

Quando le istruzioni privilegiate vanno in user mode non vanno in trap:

alcune istruzioni hanno

semantica dierente a seconda del livello. Se non posso fargli credere di essere eseguita in supervisor, non
posso eseguirla correttamente.
Due soluzioni:

Traduzione binaria

Estensione del set di istruzioni (solo su VM a 64 bit)

10

10 Cloud Computing
10.1 Introduzione
Dietro al termine cloud computing ci sono tante realt: un modello che presenta le seguenti caratteristiche

E' un servizio

Si accede in modalit remota

Il modello business: pago per l'uso

E' facilmente scalabile

Possiamo denirlo come un outsourcing di servizi che vengono pagati in base al consumo.

10.2 Paradigmi di Cloud Computing


10.2.1 Infrastructure as a Service
Sono datacenter che mettono a disposizione macchine virtualizzate, facilmente scalabili. Si controlla l'aspetto
dell'infrastruttura e si guadagnano i vantaggi della virtualizzazione. Chi usa questi sever? La piccola media
impresa

10.2.2 Software as a Service


L'utente accede al servizio che desidera tramite portali web tramite i quali pu sviluppare la sua applicazione
che viene usata come un servizio on Demand.

Un esempio Gmail.

Bisogna quindi impostare la rege per

accedere a tale applicazivo

10.2.3 Platform as a Service


E' un ambiente di sviluppo gi preposto per le applicazioni ricche ed erogate via Web. La virtualizzazione non
pi un'alternativa: ad oggi quando si sviluppa un applicativo bisogna farlo nella Macchina Virtuale e controllare
che giri bene su pi modelli di macchine virtuali.

11 Architetture Parallele
11.1 Introduzione al parallelismo
Due livelli di parallelismo

Data Level Parallelism

Task Level Parallelism

Quattro soluzioni per exploitare

Instruction Level Parallelism





Molte tecniche (Pipeline, esecuzione fuori ordine...)

Esecuzione della stessa istruzione su pi livelli di dato

Parallelismo a livello di Thread

Ecenza aumentata riducendo la dipendenza tra istruzioni

Architetture Vettoriali (GPU)

Si basa sul Data Level Paralsoelism

Hardware dedicato (Multi Core) che permette l'esecuzione di pi istruzioni in parallelo

Parallelismo a livello di Richiesta

Sfrutta parallelismo mandando in parallelo compiti disaccoppiati specicati da programmatore o


sistema operativo

11

Tassonomia di Flynn

La classicazione del parallelismo a livello di architettura quindi ricondotta alle

seguenti quattro categorie

SISD: Single instruction, Single data





Pu exploitare l'Instruction Level Parallelism

Stessa operazione su pi dati


Utilizzata in architetture vettoriali e GPU

MISD: Multiple instruction, Single data




Appare sequenziale al programmatore

SIMD: Single instruction, Multiple data




Uniprocessore standard

Usato per alta adabilit


Zero sbocchi commerciali

MIMD: Multiple instruction, Multiple data







Ogni processore ha sue istruzioni e suoi dati


Rispetto a SIMD ha in pi l'Instruction Level Parallelism
Pi overhead delle SIMD
Pi costose delle SIMD
Due classi:

Fortemente accoppiate:

multi-core e multi-processore con thread che lavorano in parallelo.

Exploit del parallelismo a livello di thread

Debolmente accopiate: clusters e sale di computer. Parallelismo a livello di richiesta

Trend di sviluppo: le SISD sono ormai abbandonate. Troppo dicile alzare la frequenza di clock (limitazioni
di calore) ed estrarre pi ILP.

11.2 Speed-up e legge di Amdhal


Deniamo lo speed-up come il rapporto tra vecchio e nuovo tempo di esecuzione. Possiamo studiare quindi lo
speedup a seconda degli n gradi di parallelismo di un sistema multiprocessore in questo modo

S (n) =
Dove

T1

Tn

sono i tempi di esecuzione con uno ed n processori. Denisco quindi l'ecienza

E (n) =
E (n) = 1

T1
Tn

implica che la scala lineare.

S (n)
n

La situazione ideale richiede che il 100% sia parallelizzabile ma

non cos: solamente una parte di una applicazione pu essere parallelizzata. Il massimo di speedup quindi
denito dalla seguente legge

lim

Senc
Dove

fenc

Sover =

1
1 fenc

la frequenza dell'operazione che pu essere parallelizzata.

11.3 Scaling
Denisco Scaling il tempo di esecuzione diviso il numero di processori

12

11.3.1 Super linear Scaling


Si ha quando

E (n) > 1.

Raro ma possibile. Capita quando il working set non sta nella cache di un singolo

processore ma nella cache combinata di pi processori.

11.3.2 Strong vs Weak Scaling

Strong Scaling: aumento lo speedup per la soluzione totale del problema. Esempio: divido l'area di un
processore in pi parti dedicate

Weak Scaling: aumento lo speedup per risolvere il problema del singolo procesore.

Esempio: aumento

l'area anzich dividerla

11.4 SIMD
11.4.1 Architetture Vettoriali
Operazioni:

Gather : caricamento di valori vettoriali da memoria

Piazza i valori nei registri

Opera sui dati

Scatter : salvataggio dei valori nella memoria

Larghi le di registro:

Agisce come un buer controllato da compilatore

Load e store sono profondamente pipelinizzate

La latenza di memoria aumenta su elementi multipli

Indipendenza
all'interno degli stessi elementi del vettore mi porta a non considerare controlli di dipendenza.
Il vector execution time dipende quindi da
A livello di costo: meno energia e costi di design di processori scalari con esecuzione fuori ordine.

Lunghezza degli operandi

Conitti strutturali

Dipendenze dato

Chime e Convoy

Denisco

convoy un set di istruzioni vettoriali che possono essere eseguite simultaneamenconvoy

te. I conitti RAW sono risolti dal fatto che le istruzioni con dipendenze sono all'interno dello stesso
grazie al

chining.
chime il tempo di esecuzione di un convoy.

Denisco

Il chime quindi ignora l'overhead a causa di limitazioni

sul numero di istruzioni e tempo di start.

Multiple Lanes

Servono nel calcolo di vettori lunghi, pi lunghi della dimensione del processore vettoriale.

Incrementare il numero di

lanes

non cambia la complessit di controllo e non richiete cambiamenti al codice

macchina - possiamo quindi dividere un vettore di 64 elementi in 4

lanes intervallate in maniera tale che quando

un'operazione dipende dalla quantit di memoria, questa parte il pi presto possibile.

Vector Lenght Register

Le architetture VMIPS hanno naturalmente 64 lanes, detto Maximum Vector

Lenght, il VLR specica quante di queste sono attive e opera nell'intervallo


che gestisce questi due parametri quindi detta

Stride di un Array

strip mining.

(1; M V L).

La tecnica di compilazione

Supponiamo di avere un prodotto di matrici. Una matrice sar memorizzata in memoria

Lo stride di un array quindi la distanza in memoria tra l'inizio del


successivo array, memorizzato in bytes. Il processore vettoriale deve quindi tenere conto di caricamento e
con priorit a righe o a colonne.

salvataggio anche di vettori con stride - soprattutto poich avere spazi di memoria vuoti diminuisce drasticamente
i conitti. Il vettore quindi detto

sparse vector.

13

Gather e Scatter

Dati dei vettori

sparse in memoria, l'operazione di gather consiste nel caricare questi valori

in un vettore di registro. L'operazione inversa, ovvero ripristinare in un vettore non contiguo in memoria dei
valori da registro detta

scatter. A livello di performance

11.4.2 GPU
Acceleratore video: renderizza le primitive 3d trasformandole in Pixel. E' anche detto acceleratore parallelo.

pi processori che condividono una memoria fuori dal chip - shared


memory MIMD. Ogni processore un processore SIMD multilthreading dove il multithreading serve a ridurre
Una GPU moderna composta da
le latenze di memoria.

NVIDIA Cuda SIMT

Nvidia propone un paradigma Single Instruction Multiple Thread: e' possibile scrivere

un programma in Cuda in modo che sia indipendente dall'architettura sul quale verr eseguito (MIMD, SIMD,

La conoscenza dell'hardware comunque un requisito per performance ottimali.


i quali sono a loro volta organizzati
in blocchi a seconda che siano in 1D, 2D, 3D. I thread sono sincronizzati da un Thread Block Scheduler che
Multithread, ILP).

Un Kernel quindi in esecuzione in parallelo su pi CUDA Threads

si occupa anche della sincronizzazione: gruppi di 32 CUDA Threads sono in esecuzione contemporaneamente
poich eseguiti in parallelo su unit funzionali da 4 a 16. Ogni processore SIMD ha una unit vettoriale per
interi ed una per Floating Point. L'uso di questo modello implica che ogni load o store sia fatta con

scatter

- per ridurre il consumo di memoria, per, la GPU pu controllare le richieste e fare

gather

coalesce ,

ovvero

compattarle in una richiesta sola.

Branches:

comportamento dierente all'intrno dello stesso warp.

C' un Vector Mask Register per il

controllo e una maschera dedicata per le istruzioni di salto condizionato. Come ottimizzazione, la GPU salta il
branch se la maschera contiene o tutti zero, o tutti uno.

Multithreading:

per ridurre i problemi di latenza di memoria, un memory thread pu gestire decine di

istruzioni SIMD thread (Warp).

Uno o pi thread sono schedulati dal Warp Scheduler,

ciascuno col

suo thread multiprocessore. Il blocco Thread limitato da Warp Massimi e registri liberi

11.5 MIMD
Nelle MIMD ogni processo lavora su dierenti istruzioni. Hanno quindi pi applicazione delle SIMD ma risultano essere anche decisamente pi costose. Come visto in precedenza possono essere debolmente o fortemente
accoppiate. Ci sono due approcci possibili alla MIMD

Single Program Multiple Data:

lo stesso programma ma con pi ussi di esecuzione

Multiple Program Multiple Data:

dierenti programmi, un programma

master

controlla una serie

di programmi slave. Esempio Playstation 3


A livello di thread abbiamo dei gruppi accoppiati che eseguono una singola attivit. Se la memoria condivisa
i thread possono appartenere allo stesso processo e condividere lo stesso spazio. Se distribuita, invece, pu
essere creato al massimo un processo per nodo. I programmi possono essere quindi sia a memoria condivisa (OS
threads) che a memoria distribuita (MPI).

11.5.1 Memoria Condivisa nelle MIMD


Il processore

pu accedere ad ogni zona di memoria:

a latenza

uniforme

(UMA) o

non uniforme

(NUMA)

La memoria a latenza uniforme tipicamente quella di un pc desktop con un processore single-core ed


caratterizzata da scarsa scalabilit.

La memoria a latenza non uniforme invece quella distribuita - l'esempio un server a cui sono connessi
2-8 computer multicore.

Sda: possibilit limitata di parallelizzare i programmi contro un costo relativamente alto per i mezzi. I
Thread dello stesso processo, quindi, condividono lo stesso spazio di memoria. Gli spazi di memoria
possono esser privati (di un processore) o condivisi (tra pi processori), questi sono replicati in cache generando
un problema di

cache coerency.

14

11.5.2 Cache coerency


I processori possono vedere valori diversi all'interno della loro cache. Un sistema coerente se

ritorna il valore pi vicino a quello appena scritto.


Coerenza:

in ogni lettura

In questa denizione rientrano due aspetti dierenti

quali valori possono essere ritornati

Consistenza:

quando un valore sar visibile da una read

I protocolli di coerenza sono quindi di due tipi

Snooping:

ogni blocco cache tiene traccia degli aggiornamenti monitorando un mezzo di trasmissione su

cui questi vengono trasmessi

Basati su directory:

lo stato condiviso di ogni blocco in una determinata locazione, accessibile da

tutte le altre.
Abbiamo anche due tipi di protocollo per mantenere la consistenza del dato

Write invalidate:

assicurarsi che il processore abbia accesso esclusivo in scrittura del dato prima di

scriverlo. Alla scrittura invalida le altre copie.

Write update o write broadcast:

aggiorna tutte le copie del dato ad ogni scrittura.

(Prestazioni

peggiori)

Snooping:

In un multi-core tipicamente il mezzo il bus di trasmissione tra le cache pubbliche e quelle private

Per mandare un messaggio di invalidate il processore acquisisce il controllo del bus e lo invia. Per questioni
di performance prima di inviare attende che il bus di sistema sia libero.

Directory in core multiprocessore:

Viene spesso mantenuta nell'ultimo livello di cache condivisa e deve comprendere tutti i livelli superiori

Per ogni blocco di memoria di cache condivisa mantenuto un bit di invalidazione per Core

Directory distribuite

Via di mezzo. Ogni directory tiene traccia di un nodo

Dimensione: numero di blocchi per numero di nodi

Stato del blocco





Condiviso: il blocco presente nel nodo ed aggiornato


Uncached: il blocco presente nel nodo ma non aggiornato o non presente
Modicato/Esclusivo: il blocco solo presente nel nodo e le modiche van propagate

11.5.3 Cache Coerency Misses


Negli uniprocessori ci sono tre tipi di miss di coerenza: obbligatoria, conitto e capacit. Nei multiprocessori
invece i miss in cache possono essere causati dall'invalidazione del dato. Possono essere classicate in

True Sharing Misses


False Sharing Misses

in cui il processore cerca la stessa zona di memoria


quando il processore accede a dierenti zome di memoria. Comuni quando un

computer MIMD usato per exploit ILP, evitabili con scelta appropriata delle strutture dati.

11.5.4 Primitive di sincronizzazione


Il problema di Cache Coerency, quindi, permette la sua ottimizzazione tramite primitive di sincronizzazione, ad

Lo spin lock denisce una porzione di codice la cui esecuzione mutualmente


esclusiva all'interno dei core. Gli altri core accedono alla sezione spin dove essenzialmente senza un
esempio Spin Lock.

intervento del sistema operativo eseguono istruzioni a vuoto.

15

11.5.5 Consistenza
Quando le write devono diventare visibili?

In quale ordine un processore deve osservare le write di un altro

processore? Impostiamo un modello di consistenza detto

consistenza sequenziale:

il risultato dell'esecuzione

deve essere lo stesso se

L'accesso ad un processore avviene in ordine

Altri processori vengon arbitrariamente messi in mezzo

si ritarda l'invalidazione di un dato ottenuto da un accesso a memoria nch


tutte le procedure derivanti dall'accesso di quel dato non sono completate. Approccio semplice
per il programmatore, dicile da implementare ecentemente sull'architettura. Si usano quindi i programmi
sincronizzati: un modello di programma semplice che permette una implementazione ad alte performance.
Per fare questo

In ogni eseuzione l'accesso a dati condivisi ordinato da operazioni di sincronizzazione.

Il modello punta a

permettere read e write anche fuori ordine.

11.5.6 Memoria distribuita


Ogni processore ha il suo pool di memoria: indirizzi separati e network di interconnessione. I

clusters

sono

quindi computer a memoria distribuita MIMD composti da molti nodi, quasi tutti a memoria condivisa. I pi
grandi di questi sono i warehouse-scale computr e supercomputers.

Warehouse-scale computers:

molti computer connessi in LAN, il livello tipicamente gestito da

software, l'obiettivo quello di ridurre i costi funzionali.

Fa l'exploit di parallelismo a livello dati e

richieste (es. Google o Facebook)

Supercomputers:

computers ad alte performance. Applicazioni puramente scientiche, ottimizzati per

calcoli oating point che

richiedono molte ore per essere completati.

Il modello di programmazione a memoria distribuita implica quindi la necessit di un sistema per passare
i messaggi:

il pi eciente quello di utilizzare pagine di memoria condivise.

Usare i thread a livello di

parallelismo tra i nodi, invece, spreca meno in termini di memoria.

Vantaggi:

forza il programmatore a pensare esplicitamente alla condivisione dati, evita alcuni aspetti

della programmazione a memoria condivisa e permette all'applicativo di scalare facilmente sulle macchine
a memoria condivisa o distribuita.

Svantaggi:

alta latenza di sincronizzazione, i dati condivisi replicati in processi dierenti possono

incrementare l'uso di memoria.

12 Sistemi di Storage
12.1 Introduzione
12.1.1 Motivazioni
Condivisione in rete di documenti tra pc con sistemi operativi diversi. Con pochi PC posso installare dei Raid
su un server, ma cosa posso fare se dovessi condividere dati, ad esempio, in pi di 50 pc?

12.1.2 Requisiti
Per stoccare dei dati devo soddisfare dei requisiti minimi

Adabilit:

non devono essere corrotti

Disponibilit:
Usabilit:

devono essere disponibili 24 ore su 24

devono poter essere usati facilmente

Scalabilit:

devono essere riproducibili in larga scala

In una rete quindi il concetto di storage stato tolto dal singolo nodo e portato esternamente secondo due
modalit

DAS:

direct attached Storage (Host-centrico)

SAN:

storage area network (Network-centrico)

16

12.2 DAS
E' un sistema di storage attaccato ad un server o ad una workstation. Ha forti limiti di scalabilit e performance
ed inoltre per poter leggere il contenuto di un'altra macchina si deve per forza passare dal sistema operativo
con un conseguente decremento di performance.

Tutti i pen-drive USB o i dischi esterni sono, ad esempio,

considerabili DAS.

12.3 NAS
Un NAS un computer connesso in rete che

fornisce solamente servizio di storage

agli altri dispositivi

della rete. Contiene uno o pi hard disk, spesso arrangiati in contenitori logici o RAID. Usa protocolli basati sui
le come NFS e SMB/CIFS. Ogni elemento NAS in una rete ha il suo indirizzo ip, permettendo una maggiore
scalabilit.
Come funziona? L'host manda una richiesta di le che viene trasmessa in rete in pacchetti IP. Il sistema
operativo del NAS server analizza la pila procollare e cerca il le.

La principale dierenza col DAS che il

NAS l'estensione di un server esistente e non necessariamente in rete, il NAS inoltre pu avere prestazioni
migliori se settato in modo che questo sia il suo compito dedicato:

unicamente dal livello di congestione sulla rete.

le sue performance, infatti, dipendono

12.4 SAN
Una Storage Area Network invece un concetto abbastanza dierente: qua diversi hard disk sono connessi ad
un computer usando diverse tecnologie di rete. La principale dierenza con un NAS che nulla lasciato al
sistema operativo del client. In una SAN posso accedere direttamente ad un disco, formattarlo e modicarlo
e non solo scambiare les col sistema operativo.

Tradizionalmente usata per grandi volumi di dati

(streaming audio/video) mentre la NAS riservata a piccoli volumi di dati e ha anche un procotollo Fiber
Channel dedicato. E' possibile unire insieme pi aree SAN e creare una rete detta SAN attached che permette
un'alta scalabilit della SAN.

12.4.1 Protocolli SAN


Con TCP/IP trasferire un GB richiede circa 82.000 richieste: troppo.

Ci sono troppi overhead di rete, non

richiesti per trasferire un le da disco: utilizziamo quindi un nuovo protocollo apposito, detto Fibre Channel.

12.4.2 Topologie SAN


Tre tipi: connessione diretta, loop arbitrario e switched.

Connessione diretta:

pi facile da implementare e da amministrare. La distanza dei nodi pu essere di

10 km.

Loop arbitrario:

concetto simile al Token ring. Dischi collegati ad anello: aggiungere o rimuovere un

disco fa saltare tutto.

Switched:

funziona come la rete tradizionale: tutto passa da un hub che incrementa la ridondanza. Il

fail di una porta non fa saltare il sistema.

12.4.3 SAN + NAS Head


Se non uso Fibre Channel come posso accedere ad una SAN? Rendo la SAN disponibile su una rete ethernet
qualunque tramite un NAS Head. In questo caso la richiesta viene inviata al Nas Server che converte il pacchetto
da IP a Fibre Channel ed accede al disco.

12.4.4 iSCSI
E' un protocollo che permette ai blocchi SCSI di essere inviati tramite internet attraverso TCP/IP. Questo
nelle SAN consente quindi di utilizzare i dischi come se fossero accessibili localmente.

Questo porta ad un

risparmio del 60% circa rispetto al Fibre Channel che molto pi costoso ma non garantisce ovviamente le
stesse performance.

12.4.5 Fiber Channel Over IP


E' un protocollo che incapsula i pacchetti FC in normalissimi pacchetti IP permettendo di comunicare tra reti
FC a grande distanza. Serve essenzialmente per connettere delle SAN remote

17

12.4.6 Fiber Channel Over Ethernet


E' un incapsulamento del protocollo FC nel protocollo Ethernet potendo quindi usare le lan a 10 Gb senza dove
perdere il protocollo FC. Il San Server si occupa di spacchettare ed inviare correttamente la richiesta.

12.5 Virtualizzazione dello Storage


E' il nascondere all'apparecchiatura che usa il sistema storage il fatto che questo sia un una locazione remota.
Due esempi sono Dropbox ed icloud.

Host Based:

i dispositivi di virtualizzazione sono sul gestore dischi logici

Switch Based:

i dispositivi di virtualizzazione sono sui SAN Switches

12.5.1 Cloud Storage


Portare la SAN all'estremo:

i dati sono stoccati in un sistema di distribuzione remota.

E' estremamente

tollerante ai guasti dato che c' il controllo di ridondanza di ogni copia ed ha anche performance relativamente
alte oltre ad essere essibile. Gli unici problemi sono quelli di condenzialit: i dati sono stoccati in macchine
che non controlliamo.

18