Sistemas de Computação
DesempenhoDesempenho
Sistemas de Computação
Definição
• Medidas de desempenho utilizadas– Tempo de resposta ou tempo de execução: tempo decorrido entre o
início da execução de um programa e o seu final
– Quantidade de trabalho realizada em um determinado intervalo de tempo (throughput)
• Enfoque será dado em tempo de execução
Sistemas de Computação
Medida de desempenho
• Para maximizar desempenho, devemos minimizar tempo de execução de uma tarefa
• Para uma máquina X, teremos– DesempenhoX=1/tempo de execução em X
• Comparação de desempenhos– DesempenhoX > DesempenhoY, então Tempo de execução em Y >
Tempo de execução em X
Sistemas de Computação
Exemplo
• Uma máquina A executa um programa em 10s e uma máquina B executa o mesmo programa em 15s. Qual é mais rápida?
• DesempenhoA/DesempenhoB=Tempo de execução em B/ Tempo de execução em A=15/10=1,5
• Dizemos que A é 1,5 vezes mais rápida que B
Sistemas de Computação
Medindo desempenho
• Tempo utilizado como tempo de execução do programa é conhecido como wall-clock time, response time, ou elapsed time
• Inclui tempo total de execução da tarefa no sistema– CPU
– acesso a disco
– acesso a memória
– atividades de E/S
– overhead de sistema operacional
Sistemas de Computação
Medindo desempenho
• Em sistemas timeshared, o sistema pode tentar maximizar o throughput e não minimizar o elapsed time, então utiliza-se uma medida para saber o tempo de CPU que foi utilizado pelo programa
• Tempo de execução da CPU (CPU time)– tempo que a CPU gastou para realizar um determinado programa
– não inclui tempo de espera pela CPU por entrada e saída ou gasto pela CPU para executar outros programas
• CPU time = User time + system CPU time
Sistemas de Computação
Medindo desempenho
• Através do comando time, obtêm-se os seguintes dados: 90.7u 12.9s 2:39 65%
• Elapsed time= 159s, User time=90,7s, System time=12,9s
• Porcentagem da CPU utilizada pelo programa– (90,7+12,9)/159=65%
– 35% gasto para espera por E/S ou por outros programas
Sistemas de Computação
Outras métricas de desempenho
• Projetistas de hardware gostariam de utilizar uma medida que mostrasse a rapidez que um hardware pode executar funções básicas
• Computadores possuem um relógio que possui uma freqüência de operação e determina o momento em que eventos são realizados na máquina
• Os intervalos de tempo discretos do relógio são denominados ciclos de relógio
• Período do relógio = 5 ns, Freqüência=200MHZ
Sistemas de Computação
Relacionando as métricas
• Tempo de execução de um programa = Número de ciclos de relógio utilizados pela CPU para o programa Tempo de cada ciclo do relógio
• Tempo de execução de um programa = Número de ciclos de relógio utilizados pela CPU para o programa / Freqüência do relógio
• Para aumentar o desempenho de uma máquina se pode reduzir o tempo do ciclo do relógio ou o número de ciclos
Sistemas de Computação
Relacionando as métricas - Exemplo
• Um programa gasta 20s para ser executado em uma máquina A, cujo relógio é de 1GHZ. Queremos construir uma máquina B que execute este mesmo programa em 12s. Sabe-se que a freqüência do relógio pode ser aumentada, mas esse aumento implica em mudanças no projeto, fazendo com que a máquina B necessite 1,2 vezes mais ciclos de relógio que a máquina A para executar o programa. Qual deve ser a freqüência a ser utilizada na máquina B?
Sistemas de Computação
Relacionando as métricas - Exemplo
• Número de ciclos requerido pelo programa executando-o em A
– Tempo de CPUA=Número de ciclos de CPUA/Freq. do relógioA
– Número de ciclos da CPUA=20109
• Relógio da máquina B– Tempo de CPUB=Número de ciclos de CPUB/Freq. do relógioB
– Número de ciclos de CPUB=1,2 Número de ciclos de CPUA
– Freq. do relógioB= 1,2 Número de ciclos de CPUA/ Tempo de CPUB=2GHZ
Sistemas de Computação
Relacionando hardware e software
• Tempo de execução de um programa pode ser visto como o produto do número de instruções necessárias para executá-lo pelo tempo médio de execução de uma instrução
• Instruções podem ter número de ciclos de relógio variáveis
– CPI (clock cycles per instruction): média do número de ciclos por instrução
• Número de ciclos de relógio de um programa éigual ao produto do número de instruções pelo número médio de ciclos de relógio gasto por cada instrução
Sistemas de Computação
Exemplo de desempenho
• Suponha que existam duas implementações para o mesmo conjunto de instruções. A máquina A possui um relógio de freqüência 1GHZ e uma CPI de 2,4 para um determinado programa com I instruções e a máquina B possui um relógio de freqüência 500 MHZ e CPI de 1,0 para o mesmo programa. Qual máquina executa mais rapidamente?
• Tempo de CPUA =Número de ciclosA Tempo do ciclo em A= I 2,4 (1/109)=2,4 I ns
Sistemas de Computação
Exemplo de desempenho
• Tempo de CPUB =Número de ciclosB Tempo do ciclo em B= I 1,0 (1/500 106)=2,0 I ns
• DesempenhoB/DesempenhoA=Tempo de execução em A/Tempo de execução em B= 2,4 I ns/ 2,0 I ns=1,2
• Máquina B é 1,2 vezes mais rápida que a máquina A
Sistemas de Computação
Equação de desempenho de um programa
• Tempo de CPU=(Número de instruções CPI) /Freqüência do relógio
– Tempo de CPU obtém-se executando o programa
– Freqüência é dada pelo fabricante
– Número de instruções pode ser obtido por ferramentas de software ou simulador da arquitetura
– CPI depende do projeto da máquina e das instruções utilizadas pelo programa
Sistemas de Computação
MIPS
• MIPS: Million Instructions Per Second
• Para um dado programa, MIPS=Número de instruções / (Tempo de execução 106)
• Máquinas mais rápidas possuem MIPS maiores
• Problemas– Máquinas com conjuntos de instruções diferentes não podem ser
comparadas porque o número de instruções vai diferir entre elas
– Não se pode considerar uma medida única, pois cada programa executado apresenta uma medida diferente
– Pode variar inversamente ao desempenho
Sistemas de Computação
Exemplo de problema com MIPS
• Considere uma máquina com freqüência de relógio de 250MHZ que possui três classes de instruções A, B e C com as seguintes medidas de CPI: Classe A=1, Classe B=2 e Classe C=3. Suponha que para um mesmo programa obtivemos código utilizando dois compiladores diferentes, resultando em:
• Qual executará mais rápido de acordo com a métrica MIPS e com o tempo de execução ?
A B CCompilador 1 5 1 1Compilador 2 10 1 1
Número de instruções (em bilhões)Código do
Sistemas de Computação
Exemplo de problema com MIPS
• Tempo de execução=Número de ciclos/Freqüência
• Número de ciclos=CPIA númeroA + CPIB númeroB + CPIC númeroC
• Número de ciclos para compilador 1=10 109
• Número de ciclos para compilador 2=15 109
• Tempo de execução para compilador 1= 40s
• Tempo de execução para compilador 2= 60s
• Compilador 1 mais rápido que 2
Sistemas de Computação
Exemplo de problema com MIPS
• MIPS=Número de instruções/(Tempo de execução 106)
• Número de instruções para compilador 1=7 109
• Número de instruções para compilador 2=12 109
• MIPS para compilador 1=7 109 / (40 106)= 175
• MIPS para compilador 2=12 109 / (60 106)= 200
• Compilador 2 produz código com maior MIPS mas maior tempo de execução
Sistemas de Computação
MFLOPS
• MFLOPS: Million FLoating-point Operations Per Second
• Para um dado programa, MFLOPS=Número de operações em ponto flutuante/ (Tempo de execução 106)
• Operações de ponto flutuante consistem de operações de adição, subtração, multiplicação ou divisão aplicadas a números representados em ponto flutuante
Sistemas de Computação
MFLOPS
• Programas diferentes requerem números diferentes de operações em ponto flutuante medida aplicada para programas que utilizam intensamente estas operações
• MFLOPS seria uma medida mais justa para comparar desempenho do que MIPS, partindo-se do pressuposto que máquinas diferentes executam números de instruções diferentes, mas igual número de operações em ponto flutuante
• Na realidade, o conjunto de operações em ponto flutuante varia de máquina para máquina
Sistemas de Computação
MFLOPS
• Operações em ponto flutuante possuem tempos de execução variáveis
• Um programa que possui 100% de somas em ponto flutuante é executado mais rápido que um outro que possua 100% de divisões, acarretando a dependência da medida MFLOPS ao programa
Sistemas de Computação
Como avaliar e comparar desempenho?
• Executar programas e verificar tempo de execução
• Programas utilizados freqüentemente pelo usuário
• Programas desenvolvidos especialmente para medir desempenho (benchmark)
• Programas devem ser aplicações típicas do ambiente em que a máquina irá ser utilizada
• Otimização de compiladores direcionados aos programas de benchmark
• Programas de benchmark devem ser grandes
Sistemas de Computação
SPEC benchmark
• System Performance Evaluation Cooperative
• Possui vários programas para benchmark em várias áreas: CPU, gráficos, paralelismo
• SPEC CPU 2000– programas CPU intensivos para dar ênfase no desempenho da
CPU, arquitetura de memória e compilador– 12 programas com inteiros (C e C++) e 14 com ponto flutuante
(Fortran)
• Problemas reais– compilador C, jogo de xadrez, banco de dados orientado a objetos,
problemas de otimização, análise de fluidos, teste de números primos, modelo de acelerador de partículas
Sistemas de Computação
SPEC benchmark
• Para uma arquitetura com um determinado conjunto de instruções, o desempenho da máquina pode ser aumentado de três maneiras:
– aumento da freqüência do relógio– melhorias na organização do processador de modo que CPI se
torne menor– melhoramentos do compilador que gera menor número de
instruções ou gera instruções com CPI médio menor
Sistemas de Computação
SPEC benchmark
0100200300400500
0 500 1000 1500
Freqüência
SPEC
int
Pentium III
Esperado
Sistemas de Computação
0
100
200
300
400
0 500 1000 1500
Freqüência
SPEC
fp Pentium III
Esperado
Sistemas de Computação
SPEC benchmark
0
100200
300
400
0 500 1000 1500
Freqüência
SPEC
fp
Pentium III
Pentium IIIPro
Top Related