Imagine se seu aplicativo de exercícios registrasse apenas você fazendo um regime simples que nunca mudasse ou exigisse qualquer ajuste em seu nível de esforço. O gráfico 2D do seu treino se pareceria com a linha plana de um monitor cardíaco, fornecendo pouco esclarecimento sobre seu desempenho geral. Infelizmente, é assim que se parece uma linha de plotagem de um benchmark sintético para desempenho de armazenamento de estação de trabalho. Esses tipos de benchmarks são projetados para extrair valores de pico do dispositivo de armazenamento usando especificações de acesso altamente otimizadas em firmware, drivers e hardware.
Imagine se seu aplicativo de exercícios registrasse apenas você fazendo um regime simples que nunca mudasse ou exigisse qualquer ajuste em seu nível de esforço. O gráfico 2D do seu treino se pareceria com a linha plana de um monitor cardíaco, fornecendo pouco esclarecimento sobre seu desempenho geral. Infelizmente, é assim que se parece uma linha de plotagem de um benchmark sintético para desempenho de armazenamento de estação de trabalho. Esses tipos de benchmarks são projetados para extrair valores de pico do dispositivo de armazenamento usando especificações de acesso altamente otimizadas em firmware, drivers e hardware.
O caso clássico é medir IO aleatório em tamanhos de bloco de 4K com profundidade de fila muito alta. Nesse cenário, há ampla oportunidade para os fornecedores otimizarem a fila de armazenamento e maximizarem a pontuação de IOPS (operações de entrada/saída por segundo) do dispositivo. Por outro lado, os aplicativos de estação de trabalho real têm uma faixa média de E/S de um ou dois. Com profundidades de fila tão baixas, a reordenação e outras otimizações não têm um efeito tão dramático no desempenho; o gargalo se reduz aos recursos de hardware bruto, mesmo com RAID ou arquiteturas de cache híbridas/em camadas agressivas.
Um armazenamento gráfico plotando leituras e gravações para um benchmark sintético. O eixo X é o deslocamento de um local inicial onde ocorre um IO. O eixo Y é o tamanho do bloco da transação feita naquele local. Um tamanho de bloco de 128K, por exemplo, tentaria ler 128K de dados da unidade em algum local de deslocamento, tudo em uma solicitação.
Caminhos de armazenamento imprevisíveis
Aplicativos de estações de trabalho reais não seguem caminhos previsíveis para acessos de armazenamento otimizados. No mundo da edição de vídeo não linear, por exemplo, um tamanho de bloco se alinha mais com o formato do contêiner ou método de codificação, em vez de um tamanho de bloco ideal para transferências de arquivos muito grandes.
Seria significativamente mais rápido para um aplicativo usar tamanhos de bloco de 128K para todos os arquivos grandes lidos na memória e, em seguida, percorrer esses dados em um tamanho menor. Mas, o fato de o aplicativo ditar outros métodos menos otimizados de acesso ao armazenamento torna qualquer medição sintética menos representativa de como o trabalho real é processado.
A edição de vídeo é apenas um exemplo. Quase todos os aplicativos, mesmo aqueles dentro do mesmo setor, usam diferentes métodos de leitura/gravação, tornando irrelevante a medição dos estados de desempenho máximo. A única maneira de medir o armazenamento com precisão é imitar as operações à medida que ocorrem nos aplicativos reais.
Melhorando a metodologia
Para seu benchmark SPECwpc 2.1, lançado no início de 2016, o subcomitê SPEC Workstation Performance Characterization (SPECwpc) usou o IOMeter — uma ferramenta de medição e caracterização do subsistema IO — para simular a atividade IO para uma variedade de aplicações profissionais. O tamanho e a frequência das transações de armazenamento foram coletados desses aplicativos e o IOMeter usou os dados para gerar uma sequência de transações de armazenamento durante um período de tempo especificado.
Embora essa técnica fosse melhor do que medir a largura de banda e a latência máximas de uma estação de trabalho, ela ainda não estava muito próxima do que os aplicativos realmente fazem. Com seu próximo lançamento, o SPECwpc queria imitar melhor o comportamento do aplicativo, ao mesmo tempo em que refletia o impacto de novos dispositivos de estado sólido, tecnologias como NAND e 3D Xpoint e várias opções de conectividade PCIe.
Ao desenvolver o benchmark SPECworkstation 3, lançado em novembro de 2018, o SPECwpc usou o Windows Process Monitor para rastrear as transações de armazenamento de uma ampla variedade de aplicativos profissionais envolvidos no trabalho real. O SPECwpc então escreveu um utilitário de reprodução para converter os rastreamentos em fluxos de transações de armazenamento que são quase idênticos aos dos aplicativos reais.
Leitura/gravação para o aplicativo SPECworkstation 3 Handbrake
Em vez de usar os dados reais dos aplicativos, que teriam centenas de gigabytes de tamanho, o SPECwpc preencheu as solicitações de armazenamento com dados selecionados aleatoriamente. O utilitário de reprodução usa vários encadeamentos para gravar em vários arquivos, exatamente como o aplicativo real.
O benchmark SPECworkstation 3 incorpora traços de uma ampla variedade de aplicações, incluindo mídia e entretenimento (animação 3D, renderização), desenvolvimento de produtos (CAD/CAM/CAE), ciências da vida (médica, molecular), serviços financeiros, energia (petróleo e gás ), operações gerais e computação de GPU.
Os aplicativos rastreados para a carga de trabalho de armazenamento SPECworkstation 3 incluem 7zip, Adobe Media Encoder, Adobe Premier Pro, Ansys Icepak, Ansys Mechanical, Autodesk 3ds Max, Autodesk Maya, Autodesk Revit, Blender, CalculiX, Dassault Systémes Solidworks, Handbrake, Lampps, Microsoft Visual Studio 2015, Namd, o conjunto de visualizações de energia SPECviewperf 13 e a carga de trabalho SPECworkstation 3 WPCcfd.
Leitura/gravação para o aplicativo Calculix (CCX) no benchmark SPECworkstation 3
Olhando para o futuro
O método de reprodução usado no SPECworkstation 3 gera threads de maneira razoavelmente próxima ao aplicativo real, mas ainda tem um problema central: a cronologia dos IOs e qualquer sincronização entre threads não é preservada com precisão. Isso leva a casos em que alguns encadeamentos concluem determinados IOs mais rapidamente e a simultaneidade de IOPs nos vários encadeamentos não é perfeitamente sincronizada, resultando em variação ocasional de execução para execução.
Para o SPECworkstation 4, com lançamento previsto para 2020, o SPECwpc trabalhará para preservar a cronologia de E/S de forma a evitar que as E/S se agrupem quando chegarem ao barramento para o dispositivo de armazenamento.
Uma chamada para participação
Embora não seja perfeito, o rastreamento de operações de armazenamento a partir de comandos de processamento de aplicativos reais, como aqueles gerados por usuários de estações de trabalho em diversos setores, é um grande avanço.
O subcomitê SPECwpc — que inclui representantes da AMD, Dell, Fujitsu, HP, Intel, Lenovo e Nvidia — recebe sugestões sobre cargas de trabalho futuras de fornecedores de dispositivos, desenvolvedores de aplicativos e usuários interessados em desempenho de armazenamento.
Tal como acontece com outros benchmarks SPEC, fornecer os meios mais precisos de capturar e relatar o desempenho de armazenamento da estação de trabalho do mundo real ajudará a definir um caminho para os desenvolvedores melhorarem seus processos no futuro.
– Alex mostra
Alex Shows é presidente do subcomitê SPEC Workstation Performance Characterization (SPECwpc) e um distinto engenheiro da Dell. Seus 23 anos de experiência na indústria incluem 19 anos de design, desenvolvimento e documentação de software; 17 anos de validação de design de hardware e driver; e 10 anos de pesquisa aplicada em tecnologias de hardware e software. Ele detém 12 patentes com seis patentes pendentes.
Para saber mais sobre benchmarking de gráficos e estações de trabalho, visite o site do SPEC/GWPG, subscrever a newsletter SPEC/GWPG, ou junte-se a Gráficos e Grupo do LinkedIn de benchmarking de estação de trabalho.
Os benchmarks SPEC/GWPG estão disponíveis para download grátis a todos, exceto fornecedores de computadores e produtos e serviços relacionados que não são membros do grupo SPEC Graphics and Workstation Performance (ESPEC/GWPG).