Geração e Modelagem de Carga de Trabalho (Workload) Rosangela Melo Diego Liberalquino Rosiberto Santos Agenda 1° Momento • Teste de Performance • Workload o que é? • Workload Real(Natural) X Sintética(Artificial) • Tipos de Workload Addition Instruction Instruction Mixes Kernels Synthetic Programs Application Benchmarks Popular Benchmarks (Sieve, Ackermann’s Function, Whetstone, Linpack, etc) • 1ᵃ Prática – JMeter Agenda 2° Momento • Seleção da Carga de Trabalho Services Exercised Level of Detail Representativeness Timeliness • Técnicas de Caracterização de Carga de Trabalho • 2ᵃ e 3ᵃ Práticas - Caracterização • Análise de Performance Teste de Performance Por que é necessário testar? • Avaliar a infra-estrutura; • Avaliar a capacidade atual; • Determinar a estabilidade; • Avaliar a release; • Avaliar o tempo de resposta; • Verificar se aplicação suportar o workload pretendida; • Verificar se aplicação possui estabilidade para aguentar o crescimento do workload. Propósitos do Teste de Performance • Determinar a probabilidade que o sistema irá atender aos SLA’s(Service Level Agreement) acordados; • Não mitiga o risco diretamente, mas identifica e quantifica o risco; • Determina a configuração mínima que permitirá o sistema atender os SLA’s; • Determinar tempos de resposta em throughputs; • Determinar gargalos (bottlenecks) no sistema; • Comparação de diferentes plataformas de hardware e Sisyema Operacional. Benefícios Teste de Performance • Melhoria da qualidade do ponto de vista do usuário; • Redução do custo de mudanças; • Redução dos custos de sistema; • Identificação antecipada dos defeitos mais críticos da aplicação como arquitetura do sistema. Workload Workload O que é Workload? Conjunto de todas as requisições de serviço (processamento) submetidas a um sistema durante um período de tempo. Objetivo • Capaz de mostrar, capturar e reproduzir um comportamento carga de trabalho real e suas funcionalidades mais importantes. Workload A carga de trabalho utilizada para comparar dois sistemas devem ser representativas em relação ao uso dos sistemas em campo. Exemplo: Um sistema real, os pacotes de uma rede são geralmente de dois tamanhos, um curto e outro longo, a carga de trabalho utilizada para aferir este sistema dever conter as mesmas características do sistema real. Teste de Performance Planejamento de Capacidade Como surge o workload? Monitora o sistema real Extrai dado usar como insumo Carga sintética Gerador de Carga Workload * Carga sintética auxilia no planejamento da capacidade Workload Real (Natural) vs Sintética (Artificial) Real Sintética Operação normal Operação não normal Base de dados grande Base de dados menor Dados sensíveis Dados não sensíveis Não pode ser modificado Facilmente modificada sem impactar sua operação Não suporta portabilidade Suporta portabilidade Sem recursos internos de medição Com recursos internos de medição Pode ser aplicado várias vezes de maneira controlada Tipos de Workloads Addition Instruction Instruction Mixes Kernel Synthetic Programs Application Benchmarks Tipos de Workloads Addition Instruction • • • • Máquinas mais simples; Conjunto de instruções reduzidas; Instruções de adição era a mais frequente; Tempo de adição métrica definida. Tipos de Workloads Instruction Mixes • • • • • Crescimento do processamento; Instruções de adição não era suficiente; Instruction mix = Instruction + Frequência de uso; Média das instruções para comparar velocidade de processadores; Desenvolvido o Mix de Gibson. Métricas de Performance • • MIPS = Millions of Instructions Per Second; MFLOPS = Millions of Floating Point Operations Per Second. Tipos de Workloads Figura 1. Gibson Instruction Mix. (Wiley e Sons, 1991) Tipos de Workloads Kernel • • • Conjunto de Funções (kernels); Generalização de Instruction Mixes; Desvantagens não utiliza dispositivos de I/O, não refletem o desempenho do sistema total. Kernels utiliza: Sieve, Puzzle, Pesquisa em árvore, Função de Ackerman, Inversão de matriz e ordenação. Tipos de Workloads Synthetic Programs • Para medir o desempenho de I/O, os analistas utilizam loops exercitadores; • O primeiro loop exercitador foi criado por Buchholz (1969) que o chamou de programa sintético. Tipos de Workloads Desvantagens Vantagens • • • Não há dados reais de arquivos; Facilmente modificados e transportados para diferentes sistemas; O processo de medição é automatizado. • Mecanismos de falhas de página e cache de disco podem não ser adequadamente exercitados; • A sobrecarga da CPU-I/O pode não ser representativa. Tipos de Workloads Application Benchmarks Tipos de Workloads Benchmarking Benchmarks (JAIN, 1991) Tipos de Workloads Weicker (2002), o que torna um programa um benchmark é o fato de que esse programa é padronizado (contendo especificações detalhadas), tendo sido projetado ou selecionado para executar em diferentes sistemas computacionais com o objetivo de realizar comparações justas do desempenho desses sistemas. Os benchmarks são programas utilizados para avaliar hardware, software ou sistemas computacionais completos. Esses programas definem cargas de trabalho que representam as características essenciais de um domínio de aplicação. Popular Benchmarks Sieve É um benchmark utilizado para comparar os microprocessadores, computadores pessoais, e linguagens de alto nível. Utiliza o algoritmo Crivo de Eratóstenes. É usado para localizar todos os números primos abaixo de um dado número n. Popular Benchmarks Figura 2. Simulação do Crivo de Eratóstenes (Wikipédia, 2012) Popular Benchmarks Ackermann’s Function • Função computável; • Definição de recursão extremamente profunda; • Utilizada como referência de benchmark para otimização de recursividade em compiladores; • Este núcleo tem sido utilizado para avaliar a eficiência do mecanismo chamado procedimento em ALGOL-like languages. Popular Benchmarks Função de Ackerman Popular Benchmarks A(1,2) Popular Benchmarks Whetstone • Utilizado na Agência Central Computer britânico, o Whetstone consiste de um conjunto de 11 módulos concebidos para combinar a frequência observada de operações dinâmicas utilizados em programas ALGOL 949. • Os resultados dos benchmarks Whetstone são medidos em KWIPS (Instruções Whetstone Kilo por segundo). • Existem muitas permutações do benchmark Whetstone, por isso, é importante assegurar que as comparações entre os vários sistemas utilizam o mesmo código de origem e que o contador de ciclo interno é definido suficientemente grande para reduzir a variabilidade de temporização; É geralmente considerada uma referência de carga para ponto flutuante. • Popular Benchmarks PROCEDURE MODULE4; (* MODULE 4: CONDITIONAL JUMPS *) VAR PROCEDURE MODULE7; I : INTEGER; BEGIN J:=1; FOR I:=1 TO N4 DO VAR I : INTEGER; TEMP : REAL; BEGIN IF J=1 THEN J:=2 ELSE J:=3; IF J>1 THEN J:=0 ELSE J:=1; IF J<2 THEN J:=1 ELSE J:=0 END; END; (* MODULE 4 *) (* MODULE 7: TRIG FUNCTIONS *) PROCEDURE P3(X,Y:REAL;VAR Z:REAL); BEGIN BEGIN X:=0.5; Y:=0.5; X:=T*(X+Y); FOR I:=1 TO N7 DO Y:=T*(X+Y); BEGIN Z:=(X+Y)/T2 TEMP:=COS(X+Y)+COS(X-Y)-1.0; END; (* PROCEDURE P3 *) X :=T*ARCTAN(T2*SIN(X)*COS(X)/TEMP); TEMP:=COS(X+Y)+COS(X-Y)-1.0; Y :=T*ARCTAN(T2*SIN(Y)*COS(Y)/TEMP); PROCEDURE MODULE8; (* MODULE 8: PROCEDURE END; CALLS *) END; (* MODULE 7 *) VAR I : INTEGER; BEGIN X:=1.0; Y:=1.0; Z:=1.0; FOR I:=1 TO N8 DO P3(X,Y,Z) END; (* MODULE 8 *) Exemplo código Whetstone Popular Benchmarks Linpack • • • É constituído por um certo número de programas que resolvem sistemas densos de equações lineares usando o pacote de sub-rotina de descompactação. Os programas podem ser caracterizados como tendo uma elevada percentagem de ponto flutuante de adições e multiplicações. Na maioria das vezes é consumido um conjunto de sub-rotinas chamadas de subprogramas básicas álgebra linear (BLAS),que são chamados repetidamente ao longo do benchmark. Os valores de referência são comparados no LINPACK baseado na taxa de execução conforme medido em MFLOPS. São utilizadas para avaliar desempenho de aplicações científicas e de engenharias. Popular Benchmarks Dhrystone • É um benchmark que contém muitas chamadas de procedimento e é utilizado para representar ambientes de sistemas de programação. Ele está disponível em três linguagens: C, Pascal e Ada. No entanto, a versão C é o mais comumente usado. Os resultados são normalmente apresentados na Dhrystone Instruções Por Segundo (DIPS). • A documentação de referência apresenta um conjunto de regras básicas para a construção e execução Dhrystone. O benchmark foi atualizado várias vezes, e é importante para especificar o número da versão quando o kernel é usado. Popular Benchmarks procedure TDhrystone.Proc6; (* ( EnumParVal: Enumeration; var EnumParRef: Enumeration) *) (* executed once *) (* EnumParVal = Ident3, EnumParRef becomes Ident2 *) begin EnumParRef := EnumParVal; if not Func3 (EnumParVal) then (* not executed *) EnumParRef := Ident4; case EnumParVal of Ident1: EnumParRef := Ident1; Ident2: if IntGlob > 100 then EnumParRef := Ident1 else EnumParRef := Ident4; Ident3: EnumParRef := Ident2; Ident4: ; (* executed *) Ident5: EnumParRef := Ident3; end; (* case *) end; (* Proc6 *) Exemplo de código Dhrystone Popular Benchmarks Lawrence Livermore Loops • • • • É constituído de 24 testes; Grandes cálculos científicos; Resultados complexos dados em MFLOPS; Aplicação em larga escala. Popular Benchmarks SPEC Benchmark Suite • • • • • • • • • • GCC – Compilador de arquivos em linguagem Assembly; Espresso – Heurística booleana, minimização de funções; Spice 2g6 – Circuito bipolar; Doduc – Realiza simulação de Monte Carlo; NASA7 – Realiza operações com matrizes; LI – Interpretador; Eqntom - uma representação lógica de uma equação booleana para uma tabela verdade; Matrix300 - Realiza operações de matrizes utilizando rotinas LINPACK com tamanho de 300 x 300; Fpppp – Química quântica; Tomcatv – Geração de vetores. 1ª Prática - JMeter Seleção de Carga de Trabalho • A carga de trabalho é a parte mais importante de qualquer projeto de avaliação de desempenho; • Escolha correta da carga de trabalho requer análise. Pontos importantes na seleção da carga são: • • • • Services Exercised; Level of Detail; Representativeness; Timeliness. Seleção de Carga de Trabalho Services Exercised • Ver o sistema como fornecedor de serviços; • Sistema de expressão em teste (SUT); • Componente em estudo (USC). Exemplo A equipe de projeto pode querer entender o impacto das diferentes Aritmética Lógica-Unit (ALU) nas Unidade Central de Processamento (CPU) em organizações. Neste caso, o processador é o SUT e o ALU é o CUS. Seleção de Carga de Trabalho Services Exercised • As métricas escolhidas devem refletir o desempenho dos serviços prestados ao nível do sistema e não no nível de componente; • Por exemplo, o MIPS é uma métrica justificáveis para comparar dois processadores, mas não é apropriada para a comparação dois sistemas de timesharing; • Gerar carga de trabalho para realizar teste de todas as funcionalidades do objeto em análise. Seleção de Carga de Trabalho Exemplo Utilizar Worlkload para medir o desempenho de uma ALU que fornece aritmética flutuante de inteiros usando apenas uma carga de trabalho inteiro. Neste caso, a carga de trabalho não exerce toda a chave serviços fornecidos pelo sistema. Seleção de Carga de Trabalho Aplicações do usuário WORKLOAD Compressão e segurança dos dados Analisar o diálogo completo das mensagens Segmentação e remontagem das mensagens Analisar as características dos pacotes transmitidos Combinar frequências de vários símbolos ou padrões de bits Analisar as características dos quadros transmitidos,taxas Assim, a escolha da carga de trabalho depende da camada em que as redes são comparadas ou analisadas Seleção de Carga de Trabalho Level of Detail Depois de identificar a lista de serviços, o próximo passo é listar as seguintes características: • • • • • Most frequent request; Frequency of request types; Time-stamped sequence of requests; Average resource demand; Distribution of resource demands. Seleção de Carga de Trabalho Level of Detail Combinação de métricas para gerar o Workload: • Recurso mais solicitado ou Mix: serviços + frequência ou time-stamped record (rastreamento dos serviços), utilizá-lo como carga de trabalho; • Faz-se uso de médias e distribuições de probabilidades. Seleção de Carga de Trabalho Representativeness • Taxa de chegada: A taxa de entrada dos pedidos devem ser os mesmos ou proporcional ao do aplicação; • Demandas de recursos: as demandas totais de cada um dos recursos chave deve ser o mesmo ou proporcional ao da aplicação; • Perfil de utilização de recursos: o perfil de uso de recursos refere-se à sequência e os valores em que diferentes recursos são usados em um aplicativo. Seleção de Carga de Trabalho Timeliness • Adequação das workloads as necessidades do sistema; • Comportamento do usuário e do sistema; • Monitoramento comportamento do usuário e atualização das cargas de trabalho a partir de medições recentes. Caracterização da Carga de Trabalho Objetivo Desenvolver um modelo de carga de trabalho que possa ser usado repetidamente. Definir componente ou unidade de carga de trabalho. Ex: • Aplicações (Servidores de email, editores de texto e etc); • Sites; • Sessões de usuário. Caracterização da Carga de Trabalho Selecionar parâmetros ou características de carga de trabalho • Tipos de transação; • Tamanhos de pacote; • Tipos de instrução. Caracterização da Carga de Trabalho Utilizar técnicas para caracterização de carga de trabalho • • • • • • • Média; Dispersão; Histogramas de parâmetro único; Histogramas de parâmetros múltiplos; Análise de componentes Principais; Modelos de Markov; Agrupamento (ou Clustering). Caracterização da Carga de Trabalho Média • • • • • • Média aritmética ou ponderada; Mediana; Moda; Média Geométrica; Média Harmônica; Frequência. Caracterização da Carga de Trabalho Dispersão • Variância e desvio padrão; • Coeficiente de variação. • Alternativas • Amplitude • Distância interquartil • Distância entre 10 e 90 percentis Caracterização da Carga de Trabalho Dispersão Caracterização da Carga de Trabalho Histogramas de parâmetro único • Analisar distribuição de parâmetro; • Matriz para representação de um ou mais parâmetros (nmk) n buckets; m parâmetros; k componentes. Caracterização da Carga de Trabalho Caracterização da Carga de Trabalho • Histograma de parâmetro único Caracterização da Carga de Trabalho Histogramas de parâmetros múltiplos • Verifica correlação entre diferentes parâmetros; • Raramente usada. Caracterização da Carga de Trabalho Análise de Componentes Principais • Soma de pesos para classificar componentes de carga de trabalho • Recebe conjunto de observações possivelmente correlacionadas; • Transforma em um conjunto de valores linearmente não correlacionados, onde a ordem dos parâmetros encontrados determina a maior influência na variância dos dados Caracterização da Carga de Trabalho Análise de Componentes Principais • Suponha um conjunto de pacotes enviados e recebidos de diferentes estações de trabalho em uma rede local (LAN). Caracterização da Carga de Trabalho Caracterização da Carga de Trabalho Caracterização da Carga de Trabalho Caracterização da Carga de Trabalho Caracterização da Carga de Trabalho Caracterização da Carga de Trabalho Modelos de Markov • Workload realiza vários tipos de requisição, onde a ordem é importante;. • A próxima requisição depende da requisição anterior • Desenvolve matriz de transição para o modelo de carga de trabalho. Caracterização da Carga de Trabalho Modelos de Markov Exemplo: Sistema de monitoramento em servidor detecta tráfego de dois tipos de pacote, pequeno e grande, onde os pequenos constituem 80% do total. Assume-se que para cada 4 pacotes pequenos recebidos 1 pacote grande é recebido. Pode ser representado pela sequência: ppppgppppg... Caracterização da Carga de Trabalho Modelos de Markov Exemplo: O mesmo do exemplo anterior, porém agora os pacotes são gerados a partir de um número aleatório x uniformemente distribuído, onde: – Se x for maior que 0.8, o pacote é grande; – e caso seja menor, é um pacote pequeno. Logo, temos: Caracterização da Carga de Trabalho Agrupamento (Clustering) • Classificar componentes da carga de trabalho em agrupamentos (clusters); • Similaridade de elementos de um cluster. Caracterização da Carga de Trabalho Etapas de Clustering 1. 2. 3. 4. 5. 6. 7. 8. 9. Amostragem Seleção de parâmetros Transformação de parâmetros Remoção de outliers Redimensionamento dos dados Selecione uma métrica de distância Realize o agrupamento Interprete os Resultados Modifique parâmetros ou número de grupos, repita passos 3 a7 10. Selecione componentes representativos de cada grupo Caracterização da Carga de Trabalho Agrupamento (Clustering) Amostragem • Seleção aleatória; • Seleção baseada em características. Seleção de parâmetros • Selecionar parâmetros com maior impacto no desempenho e variância; • Análise de componentes principais. Caracterização da Carga de Trabalho Agrupamento (Clustering) Transformação de parâmetros • Verificar assimetria de parâmetro; • Usar função para transformar parâmetro. Ex: Log. Remoção de Outliers • Remover componentes que destoam dos demais; • Considerar componentes que afetam o desempenho. Caracterização da Carga de Trabalho Agrupamento (Clustering) Redimensionamento • Utilizar distâncias relativas para parâmetros; • Normalização baseada em média e desvio padrão; • Normalização baseada em distância; • Normalização baseada em percentis; • Pesos. Caracterização da Carga de Trabalho Caracterização da Carga de Trabalho Agrupamento (Clustering) Técnicas de Agrupamento • Minimizar distância intra-grupo • Maximizar distância inter-grupo • Tipos de técnica: • Não Hierárquicas • Hierárquicas Aglomerativa Divisiva Caracterização da Carga de Trabalho Agrupamento (Clustering) Minimum Spanning Tree 1. Inicie com k = n agrupamentos 2. Encontrar o centroide do i-ésimo agrupamento 3. Computar matriz de distância inter-grupo (distância entre centroides) 4. Encontrar o menor elemento não nulo da matriz de distância e juntar grupos 5. Repetir passos 2 a 4 até que todos os componentes façam parte de um único agrupamento Caracterização da Carga de Trabalho Agrupamento (Clustering) Caracterização da Carga de Trabalho Agrupamento (Clustering) – Problemas • Variabilidade dos resultados; • Agrupamentos não significativos; • Difícil comparação de cargas de trabalho de localidades diferentes; • Exige bastante recurso computacional (?). 2ª e 3ª Práticas Obrigado! Referências JAIN, R. The Art of Computer Systems Performance Analysis: Techniques for experimental design, measurement, simulation and modeling. New York: John Wiley & Sons, 1991. 685 p. WEICKER, R. Benchmarking. In: CALZAROSSA, M.; TUCCI, S. (Ed.). Performance Evaluation of Complex Systems: Techniques and Tools : Performance 2002. Tutorial Lectures.London, UK: Springer-Verlag, 2002, (Lecture Notes in Computer Science, v. 2459). p. 179–207. WIILLEY, R.J. WILLEY SONS, J. Art of Computer Systems Performance analysis Techniques For Experimental Design Measurements Simulation And Modeling .ISBN: 0471503363,1991. Geração e Modelagem de Carga de Trabalho (Workload) Rosangela Melo Diego Liberalquino Rosiberto Santos