1 / 37

Workloads e Benchmarks

Workloads e Benchmarks. Sumário. Considerações iniciais. Termos Básicos. Workloads tradicionais Benchmarks mais conhecidos Crivo de Erastótenes Sieve Função de Ackermann Dhrystone e Whetstone LINPACK Laços de Lawrence Livermore Débito – Crédito SPEC. Considerações iniciais.

omar-owen
Télécharger la présentation

Workloads e Benchmarks

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Workloads e Benchmarks

  2. Sumário • Considerações iniciais. • Termos Básicos. • Workloads tradicionais • Benchmarks mais conhecidos • Crivo de Erastótenes • Sieve • Função de Ackermann • Dhrystone e Whetstone • LINPACK • Laços de Lawrence Livermore • Débito – Crédito • SPEC

  3. Considerações iniciais • Benchmarking: • Processo de comparação entre dois ou mais sistemas através de medições. • Benchmarks: • são as cargas de trabalho (workloads) utilizadas nestas medições • Neste contexto: • Benchmark == Workload.

  4. Benchmark • Teste ou conjunto de testes que, quando executados em um determinado sistema de computação, produzem alguma medida do desempenho de um ou mais componentes do sistema, quando estes executam um conjunto de tarefas.

  5. Termos básicos • Workloads de teste (test workloads): • qualquer workload utilizado em estudos de desempenho de sistemas. • Eles podem ser: • Reais (verdadeiros): • Obtido quando o sistema está em operação normal. • Sintéticos: • Imitam os workloads verdadeiros.

  6. Reais ou Sintéticos? • Resposta: • Sintéticos ! • Por que? • Semelhantes ao real. • Podem ser aplicados repetidamente de maneira controlada. • Não trabalham com dados reais (arquivos pequenos e dados insignificantes). • Facilmente modificáveis. • Facilmente portáveis.

  7. Workloads tradicionais • Instruções de adição. • Instruções variadas (instruction mix). • Kernels. • Benchmarks especiais para aplicativos específicos. • Programas sintéticos.

  8. Instruções de adição • Na “pré-história”, os processadores eram o componente mais importante (e caro) de um sistema. • O desempenho do processador era sinônimo do desempenho do sistema. • Estes processadores continham poucas instruções e a mais utilizada era a de adição. • Quanto mais rápida a execução da instrução de adição, melhor o desempenho do sistema. • Portanto, o workload era somente a instrução de adição e a métrica era o tempo despendido em sua execução.

  9. Mix de instruções • A medida que os sistemas evoluíram, a instrução de adição tornou-se ineficiente como único workload. • Propôs-se observar a freqüência de ocorrência das diversas instruções dentro do processador e, a partir disso, usar estas freqüências como fator de ponderação no cálculo do seu desempenho.

  10. Mix de instruções • Portanto, um mix de instruções é a especificação de diversas instruções combinadas com a suas freqüências de utilização. • O mix mais conhecido foi o de Gibson (1959), desenvolvido para IBM 704, que propunha 13 diferentes classes de instruções. • A velocidade média do processador era calculada pela média ponderada dos tempos de execução de cada um dos 13 tipos de instruções.

  11. Gibson Mix

  12. Gibson mix • Apesar de produzir um valor através do qual era possível comparar computadores com arquiteturas semelhantes, trazia uma série de desvantagens: • Ausência de instruções complexas. • Tempo de execução variável, dependendo de: • Modo de endereçamento. • Configuração do cache. • Eficiência da comunicação entre os componentes. • Interferência de outros dispositivos. • Valor dos parâmetros. • Freqüência com que o zero era considerado como parâmetro. • Configuração dos números em operações de ponto flutuante. • Número de vezes que um desvio if-else era executado etc.

  13. Kernels • Avanços na arquitetura dos computadores (bus para comunicação interna, mecanismos de endereçamento, caching etc.) tornaram bastante variável o tempo de execução de uma instrução. • Isto inviabilizou a avaliação de desempenho tendo como métrica uma única instrução. • Solução: considerar uma conjunto de instruções, ou seja, um serviço provido pelo processador, também denominado função de alto nível. • Este conjunto de instruções foi então denominado kernel.

  14. Kernels • Os mais comuns foram (processing kernels): • Sieve; • Puzzle; • Busca em Árvores; • Função de Ackermann; • Inversão de Matrizes; • Ordenação. • A maioria das desvantagens dos mix de instruções também se aplicam aos Kernels. • A principal delas é não fazer uso de E/S.

  15. Benchmarks especiais • Aplicações específicas em áreas como Bancos, Reservas de passagem aérea etc. têm desenvolvido para si benchmarks específicos. • Eles são descritos em termos das funções a serem desempenhadas e fazem uso de praticamente todos os recursos do sistema (processador, E/S, redes e bancos de dados). • Um exemplo notório deste tipo de benchmark é o débito-crédito.

  16. Programas sintéticos • Os kernels não faziam uso de dispositivos de E/S. • Como estes ficaram cada vez mais importantes, tornou-se necessário avaliar seu desempenho. • A maneira mais simples foi a proposição de aplicações de teste que realizavam uma série de chamadas de serviço que incluíam a utilização de dispositivos de E/S. • A primeira destas aplicações foi proposta por Buchholz (1969), que o denominou de programa sintético.

  17. Programas sintéticos • Sua principal vantagem é a facilidade de criação e a possibilidade de portabilidade por serem escritos em linguagem de alto nível. • Também podiam ser utilizados para mensurar serviços do SO como criação de processos, forking e alocação de memória.

  18. Benchmarks mais conhecidos • Crivo de Erastótenes: • Algoritmo simples para encontrar todos os números primos dentro de uma faixa de valores. • Criado pelo matemático grego Erastótentes (285 a 194 A.C.) • Nos anos 80 foi utilizado como benchmark em micros com processadores 8 bits (MSX, TK-82C, TK-85, CP400 etc.).

  19. Crivo de Erastótenes #include <stdio.h> #include <conio.h> #include <time.h> int primo (int j); main() { int j; clock_t inicio, fim; double diferenca; inicio = clock(); for (j = 2; j < 200000; j++) { if(primo(j)) { printf("%i ", j); } } fim = clock(); diferenca = (double) (fim - inicio) / CLOCKS_PER_SEC; printf("\nTempo: %5.2lf", diferenca); getch(); } int primo (int j) { int i; for(i = j-1; i>1; i--) { if(j % i == 0) { return(0); } } return(1); }

  20. Benchmarks mais conhecidos • Sieve: • Baseado no crivo de Erastótenes; • Propõe encontrar todos os números primos abaixo de um certo valor. • O algoritmo consiste em: • Escrever o conjunto de números entre 1 e n. • Marcar a todos como primos. • Retirar do conjunto todos os múltiplos de k, onde k = 2, 3 ... Sqrt(n).

  21. Sieve • Exemplo: encontrar todos os primos entre 1 e 20.

  22. Benchmarks mais conhecidos • Função de Ackermann • Próprio para determinar o desempenho dos processadores na execução de chamadas de procedimentos. • Definida recursivamente assim:

  23. Função de Ackermann • Ela é testada como os seguintes valores para seus dois parâmetros: Ack(3, n), com n variando de 1 a 6. • O valor que ela retorna é calculado assim: 2n+3 – 3. • O número de chamadas recursivas é calculado assim:

  24. Função de Ackermann int Ack(int m, int n) { if (m == 0) { return (n+1); } else { if(n == 0) { return (Ack(m-1, 1)); } else { return(Ack(m-1, (Ack(m, n-1)))); } } }

  25. Benchmarks mais conhecidos • LINPACK: • Consiste de programas para resolver sistemas de equações lineares densas (não esparsas), utilizando o pacote de subrotinas LINPACK. • Desenvolvido por Jack Dongarra em 1983. • Possui alta porcentagem de somas e multiplicações em ponto flutuante. • Destinava-se a avaliar sistemas da área de engenharia mecânica.

  26. Benchmarks mais conhecidos • Laços de Lawrence Livermore: • Consiste de 24 testes que exercitam principalmente cálculos científicos vetoriais. • Desenvolvido no Lawrence Livermore National Laboratories (1986). • O resultado é medido em MFLOPS (milhões de instruções em ponto flutuante por segundo). • Consiste de código extraído de aplicações reais e tornou-se um padrão famoso para a determinação da potência de sistemas computacionais.

  27. Benchmarks mais conhecidos • Débito-crédito: • É benchmark em nível de aplicação que se tornou o padrão de fato na avaliação de sistemas transacionais. • Representa uma rede bancária distribuída:

  28. Débito-crédito • Em 1973, um grande banco informatizou as transações de suas 1000 agências, 10000 caixas e 10000000 contas e previu picos de desempenho de até 100 TPS (transações por segundo). • Cada TPS requer 10 agências, 100 caixas e 100000 contas. • A métrica é definida em preço/desempenho

  29. Débito-crédito • Define-se quatro tipos de registros envolvidos nas transações: conta, caixa, agência e histórico. • Cada transação consiste na leitura de uma mensagem de 10 bytes a partir de um terminal conectado via X.25. • O pseudocódigo do benchmark ficaria assim:

  30. Bechmarks mais conhecidos • Dhrystone • Desenvolvido em 1984 por Reinhold Weicker (Siemens) em ADA. Depois portado para C, Pascal... • Bastante popular para a mensuração do desempenho da manipulação de valores inteiros: • Invocação de procedimentos • Utilização de apontadores, inteiros e caracteres • Atribuições e cálculo de expressões. • Os resultados são expressos em Dhrystone Instruction Per Second ou, em sua forma mais popular, MIPS (Milhões de Instruções Por Segundo).

  31. Benchmarks mais conhecidos • Whetstone • Consiste em um conjunto de 11 módulos projetados para imitar as operações mais comuns em programas ALGOL. • São exercitados, entre outros, manipulação de arrays, aritmética em ponto flutuante, chamada de procedimentos e passagem de parâmetros. • Os resultados eram medidos em KWIPS (Kilo Whetstone Instruction Per Second). Atualmente esta medida foi atualizada para MFLOPS (Milhões de Instruções em Ponto Flutuante por Segundo).

  32. Whetstone • Código fonte

  33. SPEC • Standard Performance Evaluation Corporation. (www.spec.org) • Associação criada 1989 por um consórcio de companhias para normalizar: • O conjunto de testes a que as máquinas devem ser submetidas. • As condições em que estes testes devem ser realizados • A forma com que os resultados devem ser documentados.

  34. SPEC • A especificação 1.0 (1990) consistia de 10 bechmarks. • A medida de desempenho constitui-se de uma média geométrica dos valores destes 10 benchmarks e é dada em SPECmark. • Esta medida ainda é válida, mas os benchmarks ficaram mais variados e novas versões foram lançadas.

  35. SPEC • Principais benchmarks na atualidade:

More Related