Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução Marcelo Zamith e-email:zamith.marcelo@gmail.com Universidade Federal Rural do Rio de Janeiro - DCC 2016.1 Roteiro Introdução Medidas de desempenho Programas para avaliação de desempenho Exercício Introdução Desempenho: eficiência do sistema inteiro Avaliar e compreender o desempenho trata: I Medir I Informar I Resumir Fatores determinantes. Introdução Desempenho: eficiência do sistema inteiro Avaliar e compreender o desempenho trata: I Medir I Informar I Resumir Fatores determinantes. Introdução O que é desempenho? Por que um programa é mais rápido que outro? Quais são os fatores determinantes? Introdução Avião Capacidade Autonomia (mi) Velocidade (mph) Boeing 777 375 4630 610 Boeing 747 470 4150 610 Concorde (BAC-Sub) 132 4000 1350 Douglas DC-8-50 146 8720 544 Introdução Avião Capacidade Autonomia (mi) Velocidade (mph) Boeing 777 375 4630 610 Boeing 747 470 4150 610 Concorde (BAC-Sub) 132 4000 1350 Douglas DC-8-50 146 8720 544 Introdução É complexo avaliar o desempenho desse tipo de sistema: I Complexidade e escala dos softwares modernos. I Ampla gama de técnicas de melhoria de desempenho. I Grande combinação de hardwares (processadores, memórias, hds, etc...). Melhorar o desempenho de um software executado em um determinado hardware. Fatores do hardware que influenciam no desempenho global do sistema. A importância relativa de cada um destes fatores. Introdução Os fatores de hardware: I Compilador: como o compilador utiliza as instruções de máquina para gerar o código do programa. I Como o hardware implementa estas instruções. I Como a memória e os dispositivos de entrada e saída se comportam durante o processamento do programa. Introdução Bom projeto depende do entendimento do impacto dos fatores de hardware: I Motivação dos projetos com aspectos específicos. I Maior desempenho. Medidas de desempenho O que determina o desempenho de um computador? Tempo de execução ou tempo de resposta: é o tempo que um programa leva para ser executada. Tempo de Resposta (latência): Quanto tempo leva para executar uma instrução. Throughput : Vazão, quantidade de instruções executadas em um determinado intervalo de tempo. Reduzir o tempo de resposta quase sempre leva a um aumento do Throughput. Medidas de desempenho O que determina o desempenho de um computador? Tempo de execução ou tempo de resposta: é o tempo que um programa leva para ser executada. Tempo de Resposta (latência): Quanto tempo leva para executar uma instrução. Throughput : Vazão, quantidade de instruções executadas em um determinado intervalo de tempo. Reduzir o tempo de resposta quase sempre leva a um aumento do Throughput. Medidas de desempenho Relação entre desempenho e tempo de execução: D = 1 TE (1) onde: D é o desempenho. TE representa o tempo de execução. Medidas de desempenho Considerando duas máquinas X e Y, se o desempenho de X é melhor do que o desempenho de Y, então: DX > DY (2) Portanto, 1 TEX > 1 TEY (3) Definições de desempenho Considerando duas máquinas X e Y, se o desempenho de X é melhor do que o desempenho de Y, então: DX > DY (4) Portanto, 1 TEX > 1 TEY (5) Medidas de desempenho Analisar dois diferentes desempenho. Expressar que a máquina X é n vezes mais rápida que a máquina Y. DX DY = n (6) ou TEY TEX = n (7) Observação: n representa uma taxa! Medidas de desempenho Analisar dois diferentes desempenho. Expressar que a máquina X é n vezes mais rápida que a máquina Y. DX DY = n (6) ou TEY TEX = n (7) Observação: n representa uma taxa! Medidas de desempenho Exemplo: Se o computador A executa um programa em 10 segundos e um computador B executa o mesmo programa em 15 segundos, pergunta-se: I Quantas vezes o computador A é mais rápido que B? I O computador A será n vezes mais rápido que o computador B se: DA DB = TEB TEA = 1.5 (8) É possível afirmar que: I O computador B é 1.5 vezes mais lento que o computador A, uma vez que: DA x 1.5 = DB (9) Medidas de desempenho Exemplo: Se o computador A executa um programa em 10 segundos e um computador B executa o mesmo programa em 15 segundos, pergunta-se: I Quantas vezes o computador A é mais rápido que B? I O computador A será n vezes mais rápido que o computador B se: DA DB = TEB TEA = 1.5 (8) É possível afirmar que: I O computador B é 1.5 vezes mais lento que o computador A, uma vez que: DA x 1.5 = DB (9) Medidas de desempenho Exemplo: Se o computador A executa um programa em 10 segundos e um computador B executa o mesmo programa em 15 segundos, pergunta-se: I Quantas vezes o computador A é mais rápido que B? I O computador A será n vezes mais rápido que o computador B se: DA DB = TEB TEA = 1.5 (8) É possível afirmar que: I O computador B é 1.5 vezes mais lento que o computador A, uma vez que: DA x 1.5 = DB (9) Medidas de desempenho Exemplo: Se o computador A executa um programa em 10 segundos e um computador B executa o mesmo programa em 15 segundos, pergunta-se: I Quantas vezes o computador A é mais rápido que B? I O computador A será n vezes mais rápido que o computador B se: DA DB = TEB TEA = 1.5 (8) É possível afirmar que: I O computador B é 1.5 vezes mais lento que o computador A, uma vez que: DA x 1.5 = DB (9) Medidas de desempenho Exemplo: Se o computador A executa um programa em 10 segundos e um computador B executa o mesmo programa em 15 segundos, pergunta-se: I Quantas vezes o computador A é mais rápido que B? I O computador A será n vezes mais rápido que o computador B se: DA DB = TEB TEA = 1.5 (8) É possível afirmar que: I O computador B é 1.5 vezes mais lento que o computador A, uma vez que: DA x 1.5 = DB (9) Medidas de desempenho Tempo de execução ou tempo de resposta define o tempo total para se completar uma tarefa computacional. I Inclui os acessos à memória e ao disco, as atividades de entrada e saída e o overhead do sistema operacional. Quando o sistema é compartilhado o processador pode trabalhar em vários programas simultaneamente. Medidas de desempenho Tempo de CPU ou Tempo de Processador: Tempo gasto pelo processador em um programa em particular. I Tempo de CPU do usuário: Tempo que a CPU gasta na execução das instruções do programa do usuário. I Tempo de CPU do sistema: Tempo que a CPU gasta pelo sistema operacional para executar tarefas em benefício do programa do usuário. Tempo de CPU = Tempo de CPU do usuário + Tempo de CPU do sistema Medidas de desempenho Considerando os detalhes de uma máquina: I Os projetistas medem a velocidade do hardware na execução de suas funções básicas com o clock. I O clock possui uma taxa constante e determina o momento da ocorrência de eventos do próprio hardware. I Ciclos de clock são intervalos de tempo discretos. São também conhecidos como: ticks, clock ticks, períodos de clock, clocks ou ciclos. I Frequência é o inverso do período: f = 1T . Medidas de desempenho Relação entre as métricas: I Tempo de CPU para um programa = ciclos de clock × Tempo do ciclo de clock. I Tempo de CPU para um programa = ciclos de clock / frequência do clock. O desempenho pode ser melhorado: I Redução do tamanho do ciclo de clock. I Redução do número de ciclos de clock. Medidas de desempenho A quantidade de instruções é outra métrica. O tempo de execução está relacionado com a quantidade de instruções executadas. Ciclo por instruções: CPI. Permite a comparação de diferentes implementações em uma mesma arquitetura do conjunto de instruções. A relação é dada por: I CPI = Número de instruções para um programa × Média dosciclos de clock por instrução. Medidas de desempenho Três principais fatores que afetam o desempenho: i Quantidade de instruções. ii Média dos ciclos gastos por instrução. iii Período de clock Equação do desempenho: I Tempo de CPU para um programa = Número de instruções × CPI × Tempo do ciclo de clock. I Tempo de CPU para um programa = (Número de instruções × CPI) / frequência do clock. Medidas de desempenho Exemplo: Suponha que temos os computadores A e B. Ambos da mesma arquitetura de conjunto de instruções. O computador A tem um período de 250ps e um CPI de 2 para um determinado programa P. O computador B tem o período de 500ps e um CPI de 1.2 para o mesmo programa P. Pergunta: Qual o computador mais rápido para este tipo de programa ? Dados do problema: Ambos os computadores executam as mesmas instruções I. CPIA = 2 CPIB = 1.2 Tempo do ciclo de clock - comp. A: PA = 250ps Tempo do ciclo de clock - comp. B : PB = 500ps Solução: TA = I × CPIA × PA = 500Ips TB = I × CPIB × PB = 600Ips TB TA = 1.2 Medidas de desempenho Exemplo: Suponha que temos os computadores A e B. Ambos da mesma arquitetura de conjunto de instruções. O computador A tem um período de 250ps e um CPI de 2 para um determinado programa P. O computador B tem o período de 500ps e um CPI de 1.2 para o mesmo programa P. Pergunta:Qual o computador mais rápido para este tipo de programa ? Dados do problema: Ambos os computadores executam as mesmas instruções I. CPIA = 2 CPIB = 1.2 Tempo do ciclo de clock - comp. A: PA = 250ps Tempo do ciclo de clock - comp. B : PB = 500ps Solução: TA = I × CPIA × PA = 500Ips TB = I × CPIB × PB = 600Ips TB TA = 1.2 Medidas de desempenho Exemplo: Suponha que temos os computadores A e B. Ambos da mesma arquitetura de conjunto de instruções. O computador A tem um período de 250ps e um CPI de 2 para um determinado programa P. O computador B tem o período de 500ps e um CPI de 1.2 para o mesmo programa P. Pergunta:Qual o computador mais rápido para este tipo de programa ? Dados do problema: Ambos os computadores executam as mesmas instruções I. CPIA = 2 CPIB = 1.2 Tempo do ciclo de clock - comp. A: PA = 250ps Tempo do ciclo de clock - comp. B : PB = 500ps Solução: TA = I × CPIA × PA = 500Ips TB = I × CPIB × PB = 600Ips TB TA = 1.2 Medidas de desempenho Tempo de CPU e os diversos tipos de instruções: acesso à memória, operações lógicas e aritméticas que não gastam o mesmo tempo. Considerar o CPI de cada classe de instrução: ciclos de clock da CPU = n∑ i=1 (CPIi × Ci) CPIi: representa a CPI da classe i de instruções. Ci: é a contagem do número de instruções da classe i para essa máquina. Medidas de desempenho Exemplo: O projetista de um compilador deseja decidir entre duas possíveis sequências de código para a resolução de um problema. Dado os tipos de instrução o o número de ciclos por instrução (CPI) de cada tipo defina. Pergunta-se: i Qual o código mais rápida? ii Qual a CPI de cada um dos programas? Dados do problema: Classe de instrução CPI A 1 B 2 C 3 Número de instruções Código Classe A Classe B Classe C 1 2 1 2 2 4 1 2 Medidas de desempenho Solução: 1. Total de instruções do programa 1: 2 + 1 + 2 = 5 instruções. 2. Total de instruções do programa 2: 4 + 1 + 1 = 6 instruções. 3. O número de ciclos de clock para o código 1: (2 x 1) + (1 x 2) + (2 x 3)= 10 ciclos. 4. O número de ciclos de clock para o código 2: (4 x 1)+(1 x 2)+(1 x 3)= 9 ciclos. 5. O código mais rápido, obter primeiro o CPI médio de cada programa: CPI médio do código 1 = 10/5 = 2.0 . CPI médio código 2 = 9/6 = 1.5. 6. O código mais rápido é o 2, por que? O código 2 tem o CPI mais baixo, ainda que execute mais uma instrução. Medidas de desempenho Solução: 1. Total de instruções do programa 1: 2 + 1 + 2 = 5 instruções. 2. Total de instruções do programa 2: 4 + 1 + 1 = 6 instruções. 3. O número de ciclos de clock para o código 1: (2 x 1) + (1 x 2) + (2 x 3)= 10 ciclos. 4. O número de ciclos de clock para o código 2: (4 x 1)+(1 x 2)+(1 x 3)= 9 ciclos. 5. O código mais rápido, obter primeiro o CPI médio de cada programa: CPI médio do código 1 = 10/5 = 2.0 . CPI médio código 2 = 9/6 = 1.5. 6. O código mais rápido é o 2, por que? O código 2 tem o CPI mais baixo, ainda que execute mais uma instrução. Medidas de desempenho Solução: 1. Total de instruções do programa 1: 2 + 1 + 2 = 5 instruções. 2. Total de instruções do programa 2: 4 + 1 + 1 = 6 instruções. 3. O número de ciclos de clock para o código 1: (2 x 1) + (1 x 2) + (2 x 3)= 10 ciclos. 4. O número de ciclos de clock para o código 2: (4 x 1)+(1 x 2)+(1 x 3)= 9 ciclos. 5. O código mais rápido, obter primeiro o CPI médio de cada programa: CPI médio do código 1 = 10/5 = 2.0 . CPI médio código 2 = 9/6 = 1.5. 6. O código mais rápido é o 2, por que? O código 2 tem o CPI mais baixo, ainda que execute mais uma instrução. Medidas de desempenho Solução: 1. Total de instruções do programa 1: 2 + 1 + 2 = 5 instruções. 2. Total de instruções do programa 2: 4 + 1 + 1 = 6 instruções. 3. O número de ciclos de clock para o código 1: (2 x 1) + (1 x 2) + (2 x 3)= 10 ciclos. 4. O número de ciclos de clock para o código 2: (4 x 1)+(1 x 2)+(1 x 3)= 9 ciclos. 5. O código mais rápido, obter primeiro o CPI médio de cada programa: CPI médio do código 1 = 10/5 = 2.0 . CPI médio código 2 = 9/6 = 1.5. 6. O código mais rápido é o 2, por que? O código 2 tem o CPI mais baixo, ainda que execute mais uma instrução. Medidas de desempenho Solução: 1. Total de instruções do programa 1: 2 + 1 + 2 = 5 instruções. 2. Total de instruções do programa 2: 4 + 1 + 1 = 6 instruções. 3. O número de ciclos de clock para o código 1: (2 x 1) + (1 x 2) + (2 x 3)= 10 ciclos. 4. O número de ciclos de clock para o código 2: (4 x 1)+(1 x 2)+(1 x 3)= 9 ciclos. 5. O código mais rápido , obter primeiro o CPI médio de cada programa: CPI médio do código 1 = 10/5 = 2.0 . CPI médio código 2 = 9/6 = 1.5. 6. O código mais rápido é o 2, por que? O código 2 tem o CPI mais baixo, ainda que execute mais uma instrução. Medidas de desempenho Solução: 1. Total de instruções do programa 1: 2 + 1 + 2 = 5 instruções. 2. Total de instruções do programa 2: 4 + 1 + 1 = 6 instruções. 3. O número de ciclos de clock para o código 1: (2 x 1) + (1 x 2) + (2 x 3)= 10 ciclos. 4. O número de ciclos de clock para o código 2: (4 x 1)+(1 x 2)+(1 x 3)= 9 ciclos. 5. O código mais rápido, obter primeiro o CPI médio de cada programa: CPI médio do código 1 = 10/5 = 2.0 . CPI médio código 2 = 9/6 = 1.5. 6. O código mais rápido é o 2, por que? O código 2 tem o CPI mais baixo, ainda que execute mais uma instrução. Medidas de desempenho Solução: 1. Total de instruções do programa 1: 2 + 1 + 2 = 5 instruções. 2. Total de instruções do programa 2: 4 + 1 + 1 = 6 instruções. 3. O número de ciclos de clock para o código 1: (2 x 1) + (1 x 2) + (2 x 3)= 10 ciclos. 4. O número de ciclos de clock para o código 2: (4 x 1)+(1 x 2)+(1 x 3)= 9 ciclos. 5. O código mais rápido, obter primeiro o CPI médio de cada programa: CPI médio do código 1 = 10/5 = 2.0 . CPI médio código 2 = 9/6 = 1.5. 6. O código mais rápido é o 2, por que? O código 2 tem o CPI mais baixo, ainda que execute mais uma instrução. Medidas de desempenho Solução: 1. Total de instruções do programa 1: 2 + 1 + 2 = 5 instruções. 2. Total de instruções do programa 2: 4 + 1 + 1 = 6 instruções. 3. O número de ciclos de clock para o código 1: (2 x 1) + (1 x 2) + (2 x 3)= 10 ciclos. 4. O número de ciclos de clock para o código 2: (4 x 1)+(1 x 2)+(1 x 3)= 9 ciclos. 5. O código mais rápido, obter primeiro o CPI médio de cada programa: CPI médio do código 1 = 10/5 = 2.0 . CPI médiocódigo 2 = 9/6 = 1.5. 6. O código mais rápido é o 2, por que? O código 2 tem o CPI mais baixo, ainda que execute mais uma instrução. Medidas de desempenho MIPS: milhões de instruções por segundo - million instruction per second. I MPIS = No. instruções / (tempo de execução ×106). MFLOPS: milhões de instruções de ponto flutuante por segundo - millions of floating-point operations per second. I MFLOPS = No. operações de PF / (tempo de execução ×106). Contexto limitado. Distorções. Resultados enganadores. Medidas de desempenho Algumas considerações sobre o MIPS: I Especifica a taxa de execução de instruções, mas não considera a capacidade de executar mais ou menos trabalho. Não se pode comparar máquinas com conjuntos de instruções diferentes. I Os resultados obtidos variam entre programas no mesmo computador Impede que determinada máquina tenha um MIPS característico. Medidas de desempenho Algumas considerações sobre o MIPS: I Especifica a taxa de execução de instruções, mas não considera a capacidade de executar mais ou menos trabalho. Não se pode comparar máquinas com conjuntos de instruções diferentes. I Os resultados obtidos variam entre programas no mesmo computador Impede que determinada máquina tenha um MIPS característico. Medidas de desempenho Lei de Amdahl: O aumento de desempenho possível com uma determinada melhoria é limitado pela quantidade de uso do recurso melhorado. Medidas de desempenho Lei de Amdahl O ganho é obtido pela expressão: Tempo de execução após melhoria = Tempo de execução não afetado + (Tempo de execução afetado / Quantidade de melhoria) Medidas de desempenho Lei de Amdahl Exemplo: Suponha que um programa seja executado em 100 segundos em uma máquina, como uma multiplicação é responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 4 vezes mais rápido? Dados do problema: Tempo de execução após melhoria = 25. Tempo de execução não afetado = 100 - 80 Tempo de execução afetado = 80 Quantidade de melhoria = ??? Solução: 25 = (100 - 80) + (80 / n) (25 - 20) × n = 80 n = 16 Observação: n = 16 → Quantidade de melhoria a ser aplicada sobre a parte “melhorável” Medidas de desempenho Lei de Amdahl Exemplo: Suponha que um programa seja executado em 100 segundos em uma máquina, como uma multiplicação é responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 4 vezes mais rápido? Dados do problema: Tempo de execução após melhoria = 25. Tempo de execução não afetado = 100 - 80 Tempo de execução afetado = 80 Quantidade de melhoria = ??? Solução: 25 = (100 - 80) + (80 / n) (25 - 20) × n = 80 n = 16 Observação: n = 16 → Quantidade de melhoria a ser aplicada sobre a parte “melhorável” Medidas de desempenho Lei de Amdahl Exemplo: Suponha que um programa seja executado em 100 segundos em uma máquina, como uma multiplicação é responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 4 vezes mais rápido? Dados do problema: Tempo de execução após melhoria = 25. Tempo de execução não afetado = 100 - 80 Tempo de execução afetado = 80 Quantidade de melhoria = ??? Solução: 25 = (100 - 80) + (80 / n) (25 - 20) × n = 80 n = 16 Observação: n = 16 → Quantidade de melhoria a ser aplicada sobre a parte “melhorável” Medidas de desempenho Lei de Amdahl Exemplo: Suponha que um programa seja executado em 100 segundos em uma máquina, como uma multiplicação é responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 5 vezes mais rápido? Dados do problema: Tempo de execução após melhoria = 20. Tempo de execução não afetado = 100 - 80 Tempo de execução afetado = 80 Quantidade de melhoria = ??? Solução: 20 = (100 - 80) + (80 / n) (20 - 20) × n = 80 Observação: Limitação da parte “melhorável” Medidas de desempenho Lei de Amdahl Exemplo: Suponha que um programa seja executado em 100 segundos em uma máquina, como uma multiplicação é responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 5 vezes mais rápido? Dados do problema: Tempo de execução após melhoria = 20. Tempo de execução não afetado = 100 - 80 Tempo de execução afetado = 80 Quantidade de melhoria = ??? Solução: 20 = (100 - 80) + (80 / n) (20 - 20) × n = 80 Observação: Limitação da parte “melhorável” Medidas de desempenho Lei de Amdahl Exemplo: Suponha que um programa seja executado em 100 segundos em uma máquina, como uma multiplicação é responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 5 vezes mais rápido? Dados do problema: Tempo de execução após melhoria = 20. Tempo de execução não afetado = 100 - 80 Tempo de execução afetado = 80 Quantidade de melhoria = ??? Solução: 20 = (100 - 80) + (80 / n) (20 - 20) × n = 80 Observação: Limitação da parte “melhorável” Medidas de desempenho Aceleração ou speedup: I Medida de como a máquina se comporta após a implementação de uma melhoria em relação ao seu comportamento anterior. I Aceleração = Desempenho após a melhoria / desempenho antes da melhoria. Aceleração = 1: Não houve melhoria efetiva. Aceleração > 1: Houve melhoria. Aceleração < 1: A melhoria deixou o programa mais lento (não houve melhoria). Programas para avaliação de desempenho Conjunto de programas executado pelo usuário: I Carga de Trabalho (workload). I Avaliação entre diferentes sistemas. Comparação do tempo de execução da carga de trabalho do usuário. Em geral, os usuários não possuem uma carga de trabalho típica que possa ser utilizada para a avaliação. Avaliação entre diferentes sistemas: I Quatro níveis de programa (em ordem decrescente de precisão de previsão): i Programas reais. ii Núcleos ou kernels: Pedaços de programas reais. iii Toy Benchmarks: 10 a 100 linhas de código que produzem um resultado conhecido a priori. iv Benchmarks sintéticos: frequência média de operações de um grande conjunto de programas. Programas para avaliação de desempenho Benchmarks: I Aplicações que representam cargas de trabalho (workloads), cujo objetivo é estimar o desempenho das cargas de trabalho reais. I Podem conter aplicações típicas de processamento científico, compiladores, processadores de texto. I Exemplos: NAS. SPLASH. SPEC (System Performance Evaluation Cooperative): SPECint, SPECfp, SPECWeb. Whetstone (ponto flutuante). Dhrystone (inteiro e string). Programas para avaliação de desempenho Benchmarks: I Aplicações que representam cargas de trabalho (workloads), cujo objetivo é estimar o desempenho das cargas de trabalho reais. I Podem conter aplicações típicas de processamento científico, compiladores, processadores de texto. I Exemplos: NAS. SPLASH. SPEC (System Performance Evaluation Cooperative): SPECint, SPECfp, SPECWeb. Whetstone (ponto flutuante). Dhrystone (inteiro e string). Exercício: Em grupo de até 3 alunos, implementem uma multiplicação de matrizes e utilizem o PAPI para obter o CPI e FLOPS do código responsável pela multiplicação. A implementação TEM que ser feita em C. Orientações: 1. Executar o programa na mesma máquina com diferentes tamanhos de matrizes. 2. Executar em máquinas diferentes a mesma instância das matrizes. Para cada execução obter o tempo, CPI e FLOPS. 3. As matrizes devem ser quadradas. 4. Trabalhar com alocação dinâmica de memória. 5. As matrizes devem ter entre 1000x1000 e 10000x10000. 6. Trabalhar com precisãosimples (ponto flutuante de 32bits). 7. Biblioteca PAPI: http://icl.cs.utk.edu/papi/index.html Data de apresentação: 6 de abril de 2016. Introdução Medidas de desempenho Programas para avaliação de desempenho Exercício
Compartilhar