Definindo desempenho
• Vazão e tempo de resposta
Organização e Arquitetura
de computadores
Avaliando e compreendendo o desempenho
Prof. Dr. Luciano José Senger
– Tempo de resposta: também chamado de tempo de
execução, o tempo total necessário para o computador
completar uma tarefa, como a acesso a disco, acesso à
memória, atividade de E/S, overhead do sistema
operacional, tempo de execução da UCP, etc.
– Vazão (throughput), indica a quantidade de tarefas
terminadas por unidade de tempo
– Exemplos:
• Disco de 50 MBytes/s
• Memória de 20 nanosegundos
• Processador de 500 MFLOPS
• Rede de 100 MBits/s
Definindo desempenho
Definindo desempenho
• Desempenho
• Desempenho relativo
– Para maximizar o desempenho, devemos minimizar o
tempo de resposta:
• Desempenho(x) = 1 / Tempo de execuçao(x)
– Em dois computadores X e Y, se o desempenho de X é
maior que o desempenho de Y temos:
Desempenho(x) > Desempenho(Y)
1 / Tempo de execução(x) > 1 / Tempo de execução(y)
Tempo de execução(y) > Tempo de execução (x)
– Na análise do projeto de um computador,
normalmente queremos relacionar o desempenho de
dois computadores diferentes de maneira quantitativa:
• Desempenho(x)/Desempenho(y) = n
• Desempenho(x)/Desempenho(y) = TE(y)/TE(x) = n
• n indica a quantidade de vezes que o desempenho de x é maior
que o de y
– Se um computador A executa um programa em 10 segundos e o
computador B executa o mesmo programa em 15 segundos, o
quanto A é melhor que B ?
– N = TE(B)/TE(A) = 15/10 = 1,5
• Medindo o desempenho
– O tempo é a medida de desempenho dos computadores: o
computador que a realiza a mesma quantidade de trabalho no
menor tempo é mais rápido
– Tempo pode ser definido de diferentes maneiras: tempo de relógio,
tempo de resposta ou tempo corrido são as definições mais simples
– Sistema de tempo compartilhado pode alterar os valores
observados: as vezes é necessário distinguir entre o tempo corrido
e o tempo que o processador foi realmente utilizado pelo programa
Medindo o desempenho
Entendendo o desempenho dos programas
• Tempo de execução na UCP ou tempo de UCP
• Diferentes aplicações
– Reconhece a distinção entre o tempo gasto para executar o
programa em termos de utilização de UCP
– O tempo de CPU pode ser dividido entre o tempo que é gasto pelo
programa e o tempo que é gasto pelo sistema
– O tempo gasto pelo sistema envolve o tempo gasto com
• Sobrecarga do sistema operacional
• Operações de E/S
– Sob o ponto de vista do sistema, tem-se o ciclo de clock e o período
de clock
• Todos os computadores são construídos com um relógio
(temporizador) que trabalha em uma velocidade constante e
determina quando os eventos ocorrem no hardware: ciclos de clock
• Período de clock refere-se ao tempo de cada ciclo de clock (p.e. 0,25
nanosegundo)
• Velocidade de clock refere-se ao inverso do período de clock, ou
frequência do processador (p.e. 4GHz)
– São sensíveis a diferentes aspectos do desempenho de um sistema
computacional
– Aplicações executadas em servidores dependem de desempenho
de E/S; aplicações numéricas dependem de um bom desempenho
da UCP
– Assim, é importante definir a medida de desempenho apropriada
– Exemplos:
• Suponha que queremos saber se uma aplicação que usa o desktop de
um cliente e um servidor remoto está limitada pelo desempenho da
rede. Para as mudanças a seguir, diga se apenas a vazão melhora, se o
tempo de resposta e a vazão melhoram ou se nenhum dos dois
melhoram:
– Um canal extra de rede é acrescentado entre o cliente e o servidor,
aumentando a vazão total da rede e reduzindo o atraso para obter acesso à
mesma;
– O software de rede é melhorado, reduzindo assim o atraso da
comunicação via rede, mas não melhorando a vazão de rede;
– Mais memória é acrescentada ao computador.
• O desempenho do computador C é 4 vezes melhor que o desempenho
do computador B, que executa uma aplicação em 28 segundos.
Quando tempo o computador C levará para executar essa aplicação?
Desempenho da UCP e seus fatores
• Medidas de desempenho
– Tucp = Ciclos x TCiclo
– Tucp = Ciclos/Velocidade de clock
• Tempo de execução da UCP para um programa (Tucp)
• Ciclos de clock da UCP para um programa (Ciclos)
• Tempo de ciclo de clock (TCiclo)
Desempenho da UCP e seus fatores
• Tempo de clock (MHz, GHz) é o inverso do ciclo
de clock (clock period)
CC = 1 / CR
one clock
period
10 nsec clock cycle => 100 MHz clock rate
– Essa fórmula deixa claro que o projetista pode melhorar
o desempenho reduzindo a duração do ciclo de clock
ou o número de ciclos de clock necessários para um
programa
– Projetista deve achar um equilíbrio entre os dois
aspectos
5 nsec clock cycle => 200 MHz clock rate
2 nsec clock cycle => 500 MHz clock rate
1 nsec clock cycle =>
1 GHz clock rate
500 psec clock cycle =>
2 GHz clock rate
250 psec clock cycle =>
4 GHz clock rate
200 psec clock cycle =>
5 GHz clock rate
Desempenho da UCP e seus fatores
Desempenho da UCP e seus fatores
• Melhorando o desempenho
• Melhorando o desempenho
– Nosso programa favorito é executado em 10 segundos
no computador A, que tem um ciclo de clock de 4 GHz.
Estamos tentando ajudar o projetista do computador B
que execute esse programa em 6 segundos. O projetista
determinou que um aumento substancial na
velocidade de clock é possível, mas esse aumento
afetará o restante do projeto de UCP, fazendo com que
o computador B exija 1,2 vez mais ciclos de clock do que
o computador A para esse programa. Que velocidade
de clock devemos dizer para o projetista buscar?
– Qual é a quantidade de ciclos de clock necessários para
o programa A?
• TempoUCPA = CiclosdeClockA/VelocidadeClockA
• 10 segundos = CiclosdeClock/(4 x 10^9 ciclos/segundo)
• CiclosdeClock = 40 x 10^9
– O tempo de UCP para B pode ser encontrado usando a
seguinte equação:
• TempoUCPB = 1,2 x ciclosdeClockA / velocidadeClockB
• 6 segundos = (1,2 x 40 x 10^9 ciclos) / velocidadeClockB
• VelocidadeClockB = (1,2 x 40 x 10^9) / 6
• VelocidadeClockB = 8GHz
– Portanto, a velocidade de clock do computador B deve
ser o dobro da velocidade de clock do computador A
para poder executar o programa em 6 segundos
Desempenho da UCP e seus fatores
Desempenho da UCP e seus fatores
• Interface hardware/software
• Usando a equação do desempenho
– As equações anteriores não fazem referência ao número de
instruções necessárias para o programa; entretanto, o compilador
claramente gerou instruções para rodar o programa, o tempo de
execução tem de depender do número de instruções em um
programa
• CiclosdeClockUCP= Intruções x médiadosCiclosdeClockporInstrução
– O termo ciclos de clock por instrução, que é o número médio de
ciclos de clock que cada instrução gasta para ser executada, é
abreviado como CPI
– Como diferentes instruções podem gastar diferentes quantidades
de tempo dependendo do que elas fazem, o CPI é uma média de
todas as instruções executadas no programa
– O CPI fornece uma maneira de comparar duas implementações
diferentes do mesmo conjunto de instruções, já que a contagem de
instruções necessária para um programa será a mesma
– Para um mesmo conjunto de instruções, o computador A tem um
tempo de ciclo de clock de 250ps e um CPI de 2,0 para um
determinado programa, e o computador B tem um tempo de ciclo
de clock de 500ps e um CPI de 1,2 para o mesmo programa. Que
computador é mais rápido para esse programa e o quanto mais
rápido?
– Sabe-se que cada computador executa o mesmo número de
instruções para o programa; vamos chamar esse número de I:
• CiclosClockCPUA = I x 2,0
• CiclosClockCPUB = I x 1,2
– Pode-se calcular o tempo de UCP para cada computador:
•
•
•
•
TempoCPUA = CiclosClockCPUA x TempoCicloClockA
TempoCPUA = I x 2,0 x 250ps = 500 x Ips
TempoCPUB = I x 1,2 x 500ps = 600 x Ips
600/500 = 1,2, assim o computador A é 1,2 vez mais rápido
Desempenho da UCP e seus fatores
Desempenho da UCP e seus fatores
• O cálculo do CPI efetivo é feito observando os diferentes
tipos de instruções e suas quantidades de ciclos:
• Usando equações de desempenho
– TempoCPU = ContagemdeInstruções x CPI x
TempoCicloClock
– TempoCPU = (ContagemdeInstruções x CPI )/
velocidadeClock
n
Ciclos de clock da UCP =
Freq
CPIi
(CPIi x Ci)
– Ci é a quantidade das instruções da classe i que é
executada
– CPIi é o número médio de ciclos de clock por
instrução para a classe de instruções corrente
– n é o número de classes de instruções
Um exemplo simples
Op
Σ
i=1
Avaliando o desempenho
Freq x CPIi
• Workload e benchmarks
ALU
50%
1
.5
.5
.5
.25
Load
20%
5
1.0
.4
1.0
1.0
Store
10%
3
.3
.3
.3
.3
Branch
20%
2
.4
.4
.2
.4
2.2
1.6
2.0
1.95
Σ=
• O quanto será mais rápida uma máquina se um esquema melhorado de
cache reduzir o tempo de load para 2 ciclos?
Novo tempo CPU = 1.6 x IC x CC então 2.2/1.6 significa 37.5% mais rápido
• Como comparar com um novo esquema que reduz pela metade o tempo de
branch ?
Novo tempo CPU = 2.0 x IC x CC então 2.2/2.0 significa 10% mais rápido
– Workload: Conjunto de programas frequentemente
executados pelo usuário
– Benchmarks: programas específicos para medir o
desempenho – formam um workload
– O melhor tipo de programa para benchmark são
aplicações reais
– Experimentos com benchmarks devem seguir o conceito
de reprodutibilidade
• E se duas instruções da ALU pudessem ser executadas ao mesmo tempo?
Novo tempo CPU = 1.95 x IC x CC então 2.2/1.95 significa 12.8% mais rápido
Avaliando o desempenho (SPEC)
Integer benchmarks
Entendendo o desempenho dos programas
FP benchmarks
Quantidade de
instruções
CPI
Algoritmo
X
X
Linguagem de
programação
X
X
Compilador
X
X
X
X
X
X
X
gzip
compression
wupwise
Quantum chromodynamics
vpr
FPGA place & route
swim
Shallow water model
gcc
GNU C compiler
mgrid
Multigrid solver in 3D fields
mcf
Combinatorial optimization
applu
Parabolic/elliptic pde
crafty
Chess program
mesa
3D graphics library
parser
Word processing program
galgel
Computational fluid dynamics
eon
Computer visualization
art
Image recognition (NN)
perlbmk
perl application
equake
Seismic wave propagation
simulation
gap
Group theory interpreter
facerec
Facial image recognition
vortex
Object oriented database
ammp
Computational chemistry
bzip2
compression
lucas
Primality testing
twolf
Circuit place & route
fma3d
Crash simulation fem
sixtrack
Nuclear physics accel
ISA (conjunto de
instruções)
Organização do
processador
apsi
Pollutant distribution
Tecnologia
Tempo de
clock
X
Avaliando o desempenho (Pentium)
Avaliando o desempenho
Avaliando o desempenho (consumo de energia)
Avaliando o desempenho
• Falácias e armadilhas
– Armadilha: usar um subconjunto da equação de
desempenho como uma medida de desempenho
– Além de usar apenas o ciclo de CPU para medir o
desempenho dos computadores, qualquer subconjunto
de medidas de desempenho pode inferir em medidas
imprecisas de desempenho
– Exemplo: medida MIPS
Avaliando o desempenho
• Falácias e armadilhas
– Armadilha: esperar a melhoria de um aspecto de um
computador para aumentar o desempenho por uma
quantidade proporcional ao tamanho da melhoria
• Suponha um programa executado em 100 segundos em um
computador, com operações de multiplicação responsáveis por
80 segundos desse tempo. Em quanto preciso melhorar a
velocidade da multiplicação se desejo que meu programa rode
cinco vezes mais rápido?
Avaliando o desempenho
Leituras Recomendadas
• Lei de Adamhl
• Patterson, capítulo 4
• Monteiro
– Tm = (T/Q + Tn)
• Tm = Tempo de execução afetado pela melhoria
• T = tempo de execução do programa afetado pela melhoria
• Q = quantidade de melhoria
• Tn = Tempo de execução não afetado
–
–
–
–
Tm = 80 segundos / n + (100-80)
20 segundos = 80 segundos/n + 20 segundos
0 = 80 segundos/n
Ou seja, não há quantidade alguma pela qual possamos
melhorar a multiplicação para conseguir um aumento
de cinco vezes no desempenho, se a multiplicação for
responsável por apenas 80% do workload
– A lei de Adamhl serve para lembrar do princípio de
projeto: torne o caso comum mais rápido
Download

Compreendendo e avaliando o desempenho