Benchmark (computação) - Benchmark (computing)

Na computação , um benchmark é o ato de executar um programa de computador , um conjunto de programas ou outras operações, a fim de avaliar o desempenho relativo de um objeto, normalmente executando uma série de testes e tentativas padrão contra ele. O termo benchmark também é comumente utilizado para os próprios programas de benchmarking elaborados.

O benchmarking geralmente está associado à avaliação das características de desempenho do hardware do computador , por exemplo, o desempenho da operação de ponto flutuante de uma CPU , mas há circunstâncias em que a técnica também é aplicável ao software . Os benchmarks de software são, por exemplo, executados em compiladores ou sistemas de gerenciamento de banco de dados (DBMS).

Os benchmarks fornecem um método de comparação do desempenho de vários subsistemas em diferentes arquiteturas de chip / sistema .

Propósito

À medida que a arquitetura do computador avançava, ficou mais difícil comparar o desempenho de vários sistemas de computador simplesmente observando suas especificações. Portanto, foram desenvolvidos testes que permitiram a comparação de diferentes arquiteturas. Por exemplo, os processadores Pentium 4 geralmente operavam em uma frequência de clock mais alta do que os processadores Athlon XP ou PowerPC , o que não significava necessariamente mais poder computacional; um processador com uma frequência de clock mais lenta pode ter um desempenho tão bom ou até melhor do que um processador operando em uma frequência mais alta. Veja BogoMips e o mito do megahertz .

Os benchmarks são projetados para imitar um tipo específico de carga de trabalho em um componente ou sistema. Os benchmarks sintéticos fazem isso por programas especialmente criados que impõem a carga de trabalho no componente. Os benchmarks de aplicativos executam programas do mundo real no sistema. Embora os benchmarks de aplicativos geralmente forneçam uma medida muito melhor do desempenho do mundo real em um determinado sistema, os benchmarks sintéticos são úteis para testar componentes individuais, como um disco rígido ou dispositivo de rede.

Os benchmarks são particularmente importantes no design da CPU , dando aos arquitetos de processador a capacidade de medir e fazer concessões nas decisões de microarquitetura . Por exemplo, se um benchmark extrair os algoritmos principais de um aplicativo, ele conterá os aspectos sensíveis ao desempenho desse aplicativo. Executar este trecho muito menor em um simulador de ciclo preciso pode dar dicas sobre como melhorar o desempenho.

Antes de 2000, arquitetos de computadores e microprocessadores usavam SPEC para fazer isso, embora os benchmarks baseados em Unix do SPEC fossem bastante longos e, portanto, difíceis de usar intactos.

Os fabricantes de computadores são conhecidos por configurar seus sistemas para fornecer desempenho irrealista em testes de benchmark que não são replicados em uso real. Por exemplo, durante a década de 1980, alguns compiladores podiam detectar uma operação matemática específica usada em um benchmark de ponto flutuante conhecido e substituir a operação por uma operação matematicamente equivalente mais rápida. No entanto, tal transformação raramente era útil fora do benchmark até meados da década de 1990, quando as arquiteturas RISC e VLIW enfatizaram a importância da tecnologia do compilador no que se refere ao desempenho. Os benchmarks agora são usados ​​regularmente por empresas de compiladores para melhorar não apenas suas próprias pontuações de benchmark, mas também o desempenho real do aplicativo.

CPUs que têm muitas unidades de execução - como uma CPU superescalar , uma CPU VLIW ou uma CPU de computação reconfigurável - normalmente têm taxas de clock mais lentas do que uma CPU sequencial com uma ou duas unidades de execução quando construída a partir de transistores que são tão rápidos. No entanto, CPUs com muitas unidades de execução geralmente concluem tarefas do mundo real e benchmark em menos tempo do que a CPU de alta taxa de clock supostamente mais rápida.

Dado o grande número de benchmarks disponíveis, um fabricante pode geralmente encontrar pelo menos um benchmark que mostra que seu sistema terá desempenho superior a outro sistema; os outros sistemas podem ser mostrados para se destacar com um benchmark diferente.

Os fabricantes geralmente relatam apenas os benchmarks (ou aspectos dos benchmarks) que mostram seus produtos da melhor maneira. Eles também são conhecidos por representar erroneamente a importância dos benchmarks, novamente para mostrar seus produtos da melhor maneira possível. Em conjunto, essas práticas são chamadas de marketing de bancada.

O ideal é que os benchmarks só devam substituir os aplicativos reais se o aplicativo não estiver disponível ou for muito difícil ou caro para transportar para um processador ou sistema de computador específico. Se o desempenho for crítico, o único benchmark que importa é o pacote de aplicativos do ambiente de destino.

Desafios

O benchmarking não é fácil e frequentemente envolve várias rodadas iterativas para se chegar a conclusões úteis e previsíveis. A interpretação dos dados de benchmarking também é extraordinariamente difícil. Aqui está uma lista parcial de desafios comuns:

  • Os fornecedores tendem a ajustar seus produtos especificamente para benchmarks padrão do setor. O Norton SysInfo (SI) é particularmente fácil de ajustar, uma vez que se inclina principalmente para a velocidade de várias operações. Tenha extremo cuidado ao interpretar esses resultados.
  • Alguns fornecedores foram acusados ​​de "trapacear" nos benchmarks - fazendo coisas que fornecem números de benchmark muito mais altos, mas pioram as coisas na provável carga de trabalho real.
  • Muitos benchmarks enfocam inteiramente a velocidade do desempenho computacional , negligenciando outros recursos importantes de um sistema de computador, como:
    • Qualidades de serviço, além do desempenho bruto. Exemplos de qualidades de serviço não medidas incluem segurança, disponibilidade, confiabilidade, integridade de execução, facilidade de manutenção, escalabilidade (especialmente a capacidade de adicionar ou realocar capacidade de forma rápida e ininterrupta), etc. Freqüentemente, há compensações reais entre essas qualidades de serviço, e todos são importantes na computação empresarial. As especificações de Benchmark do Transaction Processing Performance Council abordam parcialmente essas preocupações, especificando testes de propriedade ACID , regras de escalabilidade de banco de dados e requisitos de nível de serviço.
    • Em geral, os benchmarks não medem o custo total de propriedade . As especificações de Benchmark do Conselho de Desempenho de Processamento de Transações tratam parcialmente dessa preocupação, especificando que uma métrica de preço / desempenho deve ser relatada além de uma métrica de desempenho bruta, usando uma fórmula simplificada de TCO . No entanto, os custos são necessariamente apenas parciais, e os fornecedores são conhecidos por definirem preços específicos (e somente) para o benchmark, projetando uma configuração de "benchmark especial" altamente específica com um preço artificialmente baixo. Mesmo um pequeno desvio do pacote de referência resulta em um preço muito mais alto na experiência do mundo real.
    • Carga das instalações (espaço, energia e refrigeração). Quando mais energia é usada, um sistema portátil terá uma vida útil mais curta da bateria e precisará ser recarregado com mais frequência. Um servidor que consome mais energia e / ou espaço pode não ser capaz de se ajustar às restrições existentes de recursos do data center, incluindo limitações de refrigeração. Existem compensações reais, pois a maioria dos semicondutores requer mais energia para alternar com mais rapidez. Veja também desempenho por watt .
    • Em alguns sistemas incorporados, onde a memória é um custo significativo, uma densidade de código melhor pode reduzir significativamente os custos.
  • Os benchmarks do fornecedor tendem a ignorar os requisitos de desenvolvimento, teste e capacidade de computação de recuperação de desastres . Os fornecedores apenas gostam de relatar o que pode ser estritamente necessário para a capacidade de produção, a fim de fazer seu preço de aquisição inicial parecer o mais baixo possível.
  • Os benchmarks estão tendo problemas para se adaptar a servidores amplamente distribuídos, especialmente aqueles com sensibilidade extra para topologias de rede. O surgimento da computação em grade , em particular, complica o benchmarking, uma vez que algumas cargas de trabalho são "amigáveis ​​à grade", enquanto outras não.
  • Os usuários podem ter percepções de desempenho muito diferentes das sugeridas pelos benchmarks. Em particular, os usuários apreciam a previsibilidade - servidores que sempre atendem ou excedem os acordos de nível de serviço . Os benchmarks tendem a enfatizar pontuações médias (perspectiva de TI), em vez de tempos máximos de resposta no pior caso ( perspectiva de computação em tempo real ) ou desvios-padrão baixos (perspectiva do usuário).
  • Muitas arquiteturas de servidor degradam drasticamente em níveis altos (perto de 100%) de uso - "cair de um penhasco" - e os benchmarks devem (mas geralmente não levam) esse fator em consideração. Os fornecedores, em particular, tendem a publicar benchmarks de servidor em uso contínuo em cerca de 80% - uma situação irreal - e não documentam o que acontece com o sistema geral quando a demanda aumenta além desse nível.
  • Muitos benchmarks enfocam um aplicativo, ou mesmo uma camada de aplicativo, com exclusão de outros aplicativos. A maioria dos data centers agora está implementando a virtualização extensivamente por vários motivos, e o benchmarking ainda está alcançando a realidade em que vários aplicativos e camadas de aplicativos são executados simultaneamente em servidores consolidados.
  • Existem poucos (se houver) benchmarks de alta qualidade que ajudam a medir o desempenho da computação em lote, especialmente em lote simultâneo de alto volume e computação online. A computação em lote tende a ser muito mais focada na previsibilidade de concluir tarefas de longa execução corretamente antes dos prazos, como final do mês ou do ano fiscal. Muitos processos de negócios centrais importantes são orientados por lote e provavelmente sempre o serão, como faturamento.
  • As instituições de benchmarking freqüentemente desconsideram ou não seguem o método científico básico. Isso inclui, mas não está limitado a: tamanho pequeno da amostra, falta de controle variável e repetibilidade limitada dos resultados.

Princípios de Benchmarking

Existem sete características vitais para benchmarks. Essas propriedades principais são:

  1. Relevância: os benchmarks devem medir características relativamente vitais.
  2. Representatividade: as métricas de desempenho de referência devem ser amplamente aceitas pela indústria e pela academia.
  3. Patrimônio líquido: todos os sistemas devem ser comparados de forma justa.
  4. Repetibilidade: os resultados do benchmark podem ser verificados.
  5. Custo-benefício: os testes de referência são econômicos.
  6. Escalabilidade: os testes de benchmark devem funcionar em sistemas que possuam uma gama de recursos de baixo a alto.
  7. Transparência: as métricas de benchmark devem ser fáceis de entender.

Tipos de benchmark

  1. Programa real
    • Software de processamento de texto
    • software de ferramenta de CAD
    • software de aplicativo do usuário (ou seja: MIS)
  2. Benchmark / Microbenchmark do componente
    • A rotina principal consiste em um pedaço de código relativamente pequeno e específico.
    • medir o desempenho dos componentes básicos de um computador
    • pode ser usado para detecção automática de parâmetros de hardware do computador, como número de registros, tamanho do cache , latência da memória , etc.
  3. Núcleo
    • contém códigos de chave
    • normalmente abstraído do programa real
    • kernel popular: loop Livermore
    • benchmark linpack (contém sub-rotina de álgebra linear básica escrita em linguagem FORTRAN)
    • os resultados são representados em Mflop / s.
  4. Referência Sintética
    • Procedimento para programação de benchmark sintético:
      • obter estatísticas de todos os tipos de operações de muitos programas de aplicativos
      • obter proporção de cada operação
      • escrever programa com base na proporção acima
    • Os tipos de benchmark sintético são:
    • Esses foram os primeiros benchmarks de computador padrão da indústria de uso geral. Eles não obtêm necessariamente pontuações altas em computadores modernos com pipeline.
  5. Benchmarks de I / O
  6. Benchmarks de banco de dados
    • medir a taxa de transferência e os tempos de resposta dos sistemas de gerenciamento de banco de dados (DBMS)
  7. Benchmarks paralelos
    • usado em máquinas com vários núcleos e / ou processadores, ou sistemas que consistem em várias máquinas

Benchmarks comuns

Padrão da indústria (auditado e verificável)

Comparativos de mercado de código aberto

  • AIM Multiuser Benchmark - composto de uma lista de testes que podem ser combinados para criar uma 'combinação de carga' que simule uma função específica do computador em qualquer sistema operacional do tipo UNIX.
  • Bonnie ++ - benchmark de sistema de arquivos e disco rígido
  • BRL-CAD - suíte de benchmark independente de arquitetura de plataforma cruzada com base em desempenho de ray tracing multithread; linha de base contra VAX-11/780; e usado desde 1984 para avaliar o desempenho relativo da CPU, diferenças do compilador, níveis de otimização, coerência, diferenças de arquitetura e diferenças de sistema operacional.
  • Conhecimento coletivo - estrutura de plataforma cruzada personalizável para crowdsource benchmarking e otimização de cargas de trabalho do usuário (como aprendizado profundo ) em hardware fornecido por voluntários
  • Coremark - benchmark de computação incorporada
  • DEISA Benchmark Suite - benchmark de aplicações científicas de HPC
  • Dhrystone - desempenho aritmético inteiro, frequentemente relatado em DMIPS (Dhrystone milhões de instruções por segundo)
  • DiskSpd - ferramenta de linha de comando para benchmarking de armazenamento que gera uma variedade de solicitações contra arquivos de computador , partições ou dispositivos de armazenamento
  • Fhourstones - um benchmark inteiro
  • DICA - projetado para medir o desempenho geral da CPU e da memória
  • Iometer - ferramenta de medição e caracterização de subsistema de E / S para sistemas simples e agrupados.
  • IOzone - benchmark do sistema de arquivos
  • Benchmarks LINPACK - tradicionalmente usados ​​para medir FLOPS
  • Loops Livermore
  • Benchmarks paralelos NAS
  • NBench - conjunto de benchmark sintético que mede o desempenho de aritmética de inteiros, operações de memória e aritmética de ponto flutuante
  • PAL - uma referência para motores de física em tempo real
  • PerfKitBenchmarker - Um conjunto de benchmarks para medir e comparar as ofertas de nuvem.
  • Phoronix Test Suite - suíte de benchmarking de plataforma cruzada de código aberto para Linux, OpenSolaris, FreeBSD, OSX e Windows. Inclui vários outros benchmarks incluídos nesta página para simplificar a execução.
  • POV-Ray - renderização 3D
  • Tak (função) - um benchmark simples usado para testar o desempenho de recursão
  • Benchmark TATP - Benchmark de processamento de transações de aplicativos de telecomunicações
  • TPoX - Um benchmark de processamento de transações XML para bancos de dados XML
  • VUP (unidade de desempenho VAX) - também chamado de VAX MIPS
  • Whetstone - desempenho aritmético de ponto flutuante, frequentemente relatado em milhões de instruções de Whetstone por segundo (MWIPS)

Comparativos de mercado do Microsoft Windows

Outras

  • AnTuTu - comumente usado em telefones e dispositivos baseados em ARM.
  • Geekbench - Um benchmark de plataforma cruzada para Windows, Linux, macOS, iOS e Android.
  • iCOMP - o desempenho comparativo do microprocessador Intel, publicado pela Intel
  • Khornerstone
  • Classificação de desempenho - esquema de modelagem usado pela AMD e Cyrix para refletir o desempenho relativo geralmente em comparação com produtos concorrentes.
  • SunSpider - um teste de velocidade do navegador
  • VMmark - um pacote de referência de virtualização.

Veja também

Referências

  1. ^ Fleming, Philip J .; Wallace, John J. (1986-03-01). “Como não mentir nas estatísticas: a maneira correta de resumir os resultados do benchmark” . Comunicações da ACM . 29 (3): 218–221. doi : 10.1145 / 5666.5673 . ISSN  0001-0782 . S2CID  1047380 . Recuperado 09/06/2016 .
  2. ^ Krazit, Tom (2003). "Táticas de referência da NVidia reavaliadas" . IDG News . Arquivado do original em 06/06/2011 . Página visitada em 2009-08-08 .
  3. ^ Rodízio, Kevin (2006). "Metodologia de Teste e Benchmarking de Hardware" . Arquivado do original em 05/02/2008 . Página visitada em 2008-02-24 .
  4. ^ Dai, Wei; Berleant, Daniel (12–14 de dezembro de 2019). "Comparando Hardware e Frameworks de Aprendizado Profundo Contemporâneo: uma Pesquisa de Métricas Qualitativas" (PDF) . 2019 IEEE Primeira Conferência Internacional sobre Inteligência de Máquina Cognitiva (CogMI) . Los Angeles, CA, EUA: IEEE. pp. 148-155. arXiv : 1907.03626 . doi : 10.1109 / CogMI48466.2019.00029 .
  5. ^ Ehliar, Andreas; Liu, Dake. "Benchmarking de processadores de rede" (PDF) . Citar diário requer |journal=( ajuda )
  6. ^ Transaction Processing Performance Council (fevereiro de 1998). "História e visão geral do TPC" . TPC . Conselho de desempenho de processamento de transações . Página visitada em 02-07-2018 .

Leitura adicional