Arquitetura de Computadores
Prof. Mário
Anotações sobre E/S e Discos
Notas sobre E/S
Vejamos um exemplo do impacto do sistema de E/S na performance global de um sistema de
computação (computador)
Suponha que nós tenhamos um benchmark que executa em 100 segundos de tempo decorrido, onde 90 segundos é tempo de CPU e o resto é tempo de E/S. Se o tempo de CPU
melhora em 50% a cada ano pelos próximos 5 anos mas o tempo de E/S não melhora, quão
mais rápido o nosso programa irá rodar no fim de 5 anos?
Resposta
Nós sabemos que:
Tempo decorrido = tempo de CPU + tempo de E/S
100 = 90 + tempo de E/S
tempo de E/S = 10 segundos
Calculando o novo tempo de CPU e tempo decorrido resultante para os próximos 5 anos,
temos
Após n anos
0
1
2
3
4
5
Tempo de CPU
90 s
90
= 60 s
1.5
60
= 40 s
1.5
40
= 27 s
1.5
27
= 18 s
1.5
18
= 12 s
1.5
Tempo de E/S
10 s
10 s
10 s
10 s
10 s
10 s
Tempo Decorrido
100 s
70 s
50 s
37 s
28 s
22 s
% tempo de E/S
10%
14%
20%
27%
36%
45%
A melhora no desempenho de CPU nos 5 anos é:
90
= 7.5
12
Contudo a melhora no tempo decorrido é apenas:
100
= 4.5
22
e o tempo de E/S aumentou de 10% para 45% do tempo decorrido.
c
2001
Mário Olı́mpio de Menezes
Página 1/5
Medidas de Performance de E/S - terminologia e unidades
A performance do sistema de E/S depende da taxa à qual o sistema transfere dados. A taxa de transferência depende do taxa de clock, que é tipicamente dada em MHz = 106 ciclos por segundo. A
taxa de transferência normalmente é quotada em MB/seg. Nos sistemas de E/S, MBs são medidos
usando a base 10 (i.e., 1 MB = 106 = 1.000.000 bytes), diferente da memória principal, onde
a base 2 é utilizada (i.e.,1 MB = 220 = 1.048.576 bytes). Além disso, para confundir mais ainda, esta diferença introduz a necessidade de se converter entre a base 10 (1K = 1000) e a base 2
(1K = 1024) porque muitos acessos de E/S são para blocos de dados que tem um tamanho que é
uma potência de 2. No nosso tratamento, nós não vamos complicar tanto, e vamos tratar as duas
medidas como se as unidades fossem idênticas. Isso introduz um pequeno erro, que poderá ser
determinado pelo estudante mais aplicado.
Discos
Para acessar dados, o SO deve direcionar o disco através de um processo de 3 estágios.
1. posicionar a cabeça de leitura no traço certo (“seek time”)
2. esperar pelo setor correto passar sob a cabeça de leitura/gravação (“rotational latency”)
3. transferir os dados em blocos de bits (“transfer time”)
Os tempos importantes no acesso a disco, portanto são: seek time, rotational latency time,
transfer time. A determinação destes tempos é mostrada a seguir
Seek Time - Obtido dos dados do fabricante como average seek time, seu valor varia de 8ns
– 20ns. Entretanto, o valor prático utilizado está entre 25% e 33% do valor do fabricante,
dependendo da aplicação e do escalonamento dos pedidos de acesso ao disco - localidade de
referência a disco.
O “seek time” pode ser aproximado pela seguinte fórmula linear:
Ts = m × n + s
onde:
Ts “seek time” estimado
n número de trilhas (tracks) atravessadas
m constante que depende do dispositivo de disco
s tempo de inı́cio (startup time)
Para discos em geral (um pouco antigos), podemos fazer as seguintes aproximações: m =
0.3 ms, s = 20 ms; para discos mais modermos, estes tempos são m = 0.1 ms e s =
3 ms. Em geral, o “average seek time” é mais confiavelmente obtido de “data sheets” dos
fabricantes. Por exemplo, no site da IBM (http://www.storage.ibm.com) ou da
Maxtor (http://www.maxtor.com).
c
2001
Mário Olı́mpio de Menezes
Página 2/5
Average Rotational Latency - tempo médio necessário para que o setor desejado passe pela
cabeça de leitura/gravação. É dado por:
1
2r
Tr =
onde r é a velocidade de rotação em segundos.
Por exemplo, para um disco de 3600 RPM é dado por:
0.5 rotação
=
3600 rotação/min
0.5 rotação
3600 rotação/min
60 seg/min
= 8.333 ms
Para um disco de 7200 RPM é dado por:
0.5 rotação
=
7200 rotação/min
0.5 rotação
rotação/min
60 seg/min
= 4.1667 ms
7200
Transfer Time - o tempo de transferência de ou para o disco depende da velocidade de
rotação do disco da seguinte maneira:
T =
b
rN
onde:
T tempo de transferência
b número de bytes a serem transferidos
N número de bytes em uma trilha (track)
r velocidade de rotação, em revoluções por segundo
Total average access time Ta - pode ser expresso como:
Ta = Ts +
1
b
+
2r rN
onde Ts é o “average seek time”.
Abaixo está a identificação de um disco, obtido diretamente através do sistema operacional
(hdparm -i /dev/hda).
Model=QUANTUM FIREBALLP AS30.0, FwRev=A1Y.1300, SerialNo=193036239582
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=32256, SectSize=21298, ECCbytes=4
BuffType=DualPortCache, BuffSize=1902kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=58633344
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
c
2001
Mário Olı́mpio de Menezes
Página 3/5
Podemos obter informações sobre o mesmo disco de várias outras maneiras:
• através do /proc (/proc/ide/hda/geometry):
voabaixo:˜# cat /proc/ide/hda/geometry
physical
58168/16/63
logical
3649/255/63
• através do hdparm (hdparm -g /dev/hda)
voabaixo:˜# hdparm -g /dev/hda
/dev/hda:
geometry
= 3649/255/63, sectors = 58633344, start = 0
Para este mesmo disco, abaixo estão dois benchmarks, realizados em duas regiões diferentes
do disco.
(/dev/hda1) --> ˜# bonnie++ -d /tmp -s 512 -r 256 -u 1000 -g 1000
Version 1.01d ------Sequential Output------ --Sequential Input- --Random-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-Machine
Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
voabaixo 512M 10036 98 34252 19 6901
6 8376 79 44517 13 164.2
0
------Sequential Create------ --------Random Create--------Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16
843 99 +++++ +++ +++++ +++
848 99 +++++ +++ 4424 100
(/dev/hda7) ˜# bonnie++ -d /home/mario/tmp -s 512 -r 256 -u 1000 -g 1000
Version 1.01d ------Sequential Output------ --Sequential Input- --Random-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-Machine
Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
voabaixo 512M 10015 96 24966 12 7333
6 8090 76 37599
9 168.8
0
------Sequential Create------ --------Random Create--------Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16
857 99 +++++ +++ +++++ +++
894 99 +++++ +++ 4627 99
Caracterı́sticas de Performance
Um arquivo de performance é caracterizado pelos seguintes parâmetros:
• Command Overhead
• Posicionamento mecânico
c
2001
Mário Olı́mpio de Menezes
Página 4/5
– Seek Time
– Latência
• Velocidade de Transferência de Dados
• Operação de buferização (look ahead/write cache)
Nota: Todos estes parâmetros contribuem para a avaliação de performance. Existem outros
parâmetros que contribuem para a performance de um sistema real; esta especificação tenta definir
as caracterı́sticas mı́nimas, não a vazão do sistema, que dependerá do sistema e da aplicação.
Os valores de “command overhead”, posicionamento mecânico (seek time e latência) são obtidos das especificações dos discos.
A velocidade de transferência de dados pode ser dividida em Taxa de transferência instantânea
disco-buffer e Taxa de Transferência disco-buffer sustentável. A primeira é dada por (Núm. de
Setores em uma Trilha) * 512 * (Revoluções/seg).
A Taxa de Transferência Sustentável é dada por:
Sustained Transfer Rate =
A
B+C +D
onde:
A = (Num. Setores de Dados por Cilindro) * 512
B = ((Num. de Superfı́cie por Cilindro) - 1) * (Tempo de Movim. da Cabeça)
C = (Tempo de mudança do cilindro)
D = (Num. Superfı́cie) * (Tempo de uma revolução)
Para o Deskstar 60GXP modelo de 60GB e para a trilha mais externa, estes valores são:
• Num. de Setores de Dados por cilindro = 4680
• Num. de Superfı́cie por Cilindro = 6
• Tempo de Movim. da Cabeça = 1.4ms
• Tempo de Mudança do cilindro = 1.8ms
e produz uma taxa de transferência sustentável de 40.8MB/s
Para o mesmo disco e para a trilha mais interna, estes valores são:
• Num. de Setores de Dados por cilindro = 2238
• Num. de Superfı́cie por Cilindro = 6
• Tempo de Movim. da Cabeça = 1.4ms
• Tempo de Mudança do cilindro = 1.8ms
e produz uma taxa de transferência sustentável de 19.5MB/s
c
2001
Mário Olı́mpio de Menezes
Página 5/5
Download

Exercicios - Arquitetura de Computadores