Benchmarks para servidores Linux: uma seleção de ferramentas abertas
Continuamos falando sobre ferramentas para avaliar o desempenho da CPU em máquinas Linux. Hoje no material: temci, uarch-bench, likwid, perf-tools e llvm-mca.
Esta é uma ferramenta para estimar o tempo de execução de dois programas. Essencialmente, permite comparar o tempo de execução de duas aplicações. O autor do utilitário foi um estudante alemão, Johannes Bechberger, que o desenvolveu como parte de sua tese de graduação em 2016. A ferramenta de hoje distribuído por licenciado sob a Licença Pública Geral GNU.
Johannes queria criar uma ferramenta que lhe permitisse medir o desempenho de um sistema de computação em um ambiente controlado. Portanto, uma das principais características do temci é a capacidade de configurar um ambiente de teste. Por exemplo, uma lata: altere as configurações do gerenciador de frequência da CPU, desative hyperthreading e caches L1 e L2, desligue o modo turbo em processadores Intel, etc. Para benchmarking, o temci usa ferramentas tempo, perf_stat и getrusage.
Esta é a aparência do utilitário no primeiro caso:
# compare the run times of two programs, running them each 20 times
> temci short exec "sleep 0.1" "sleep 0.2" --runs 20
Benchmark 20 times [####################################] 100%
Report for single runs
sleep 0.1 ( 20 single benchmarks)
avg_mem_usage mean = 0.000, deviation = 0.0
avg_res_set mean = 0.000, deviation = 0.0
etime mean = 100.00000m, deviation = 0.00000%
max_res_set mean = 2.1800k, deviation = 3.86455%
stime mean = 0.000, deviation = 0.0
utime mean = 0.000, deviation = 0.0
sleep 0.2 ( 20 single benchmarks)
avg_mem_usage mean = 0.000, deviation = 0.0
avg_res_set mean = 0.000, deviation = 0.0
etime mean = 200.00000m, deviation = 0.00000%
max_res_set mean = 2.1968k, deviation = 3.82530%
stime mean = 0.000, deviation = 0.0
utime mean = 0.000, deviation = 0.0
Com base nos resultados do benchmarking, o sistema gera relatório conveniente com diagramas, tabelas e gráficos, o que distingue o temci de soluções semelhantes.
Entre as deficiências do temci, destaca-se a sua “juventude”. Por causa disso ele nem tudo é suportado configurações de hardware e software. Por exemplo, é difícil de executar no macOS e alguns recursos não estão disponíveis em um sistema baseado em ARM. No futuro, a situação pode mudar, já que o autor está desenvolvendo ativamente o projeto, e o número de estrelas no GitHub está aumentando gradativamente - não faz muito tempo, o temci até discutido nos comentários no Hacker News.
Um utilitário para avaliar o desempenho de funções de CPU de baixo nível, desenvolvido pelo engenheiro Travis Downs (Travis Downs). Recentemente ele tem blogado Desempenho é importante nas páginas do GitHub, que fala sobre ferramentas de benchmarking e outras coisas relacionadas. Em geral, o uarch-bench está apenas começando a ganhar popularidade, mas já é bastante comum mencionado residentes do Hacker News em tópicos temáticos como uma ferramenta essencial para benchmarking.
Uarch-bench permite avaliar o desempenho da memória, velocidade de carregamento de dados paralelos e trabalho de limpeza Registros YMM. A aparência dos resultados de benchmarking gerados pelo programa pode ser encontrada no repositório oficial na parte inferior da página.
É importante notar que o uarch-bench, assim como o temci, desativa Função Intel Turbo Boost (aumenta automaticamente a velocidade do clock do processador sob carga) para que os resultados dos testes sejam consistentes.
Por enquanto, o projeto está em fase inicial de desenvolvimento, portanto o uarch-bench não possui documentação detalhada e seu funcionamento pode conter bugs - por exemplo, as dificuldades são conhecidas com lançamento no Ryzen. Além disso, apenas benchmarks para arquiteturas x86 são suportados. O autor promete adicionar mais funcionalidades no futuro e convida você a participar do desenvolvimento.
Este é um conjunto de ferramentas para avaliação de desempenho de máquinas Linux com processadores Intel, AMD e ARMv8. Foi criado sob os auspícios do Ministério Federal Alemão de Educação e Pesquisa em 2017 e lançado em código aberto.
Dentre as ferramentas likwid, podemos destacar o likwid-powermeter, que exibe informações dos registros RAPL sobre a energia consumida pelo sistema, bem como o likwid-setFrequencies, que permite controlar a frequência do processador. Você pode ver a lista completa encontre no repositório.
A ferramenta é usada por engenheiros envolvidos em pesquisas de HPC. Por exemplo, com likwid trabalho um grupo de especialistas do Centro Regional de Computação da Universidade de Erlangen-Nuremberg (RRZE) na Alemanha. Ela também participa ativamente no desenvolvimento deste conjunto de ferramentas.
Esta ferramenta para analisar o desempenho de servidores Linux introduzido Brendan Gregg. Ele é um dos desenvolvedores DTrace — uma estrutura de rastreamento dinâmico para depuração de aplicativos em tempo real.
perf-tools é baseado nos subsistemas de kernel perf_events e ftrace. Seus utilitários permitem analisar a latência de E/S (iosnoop), rastrear argumentos de chamadas do sistema (unccount, funcslower, funcgraph e functrace) e coletar estatísticas sobre “acertos” no cache do arquivo (cachestat). Neste último caso, o comando fica assim:
Uma comunidade bastante grande se formou em torno do instrumento (quase 6 mil estrelas no GitHub). E há empresas que usam ativamente ferramentas de desempenho, por exemplo Netflix. Mas a ferramenta está sendo desenvolvida e modificada (embora as atualizações tenham sido lançadas muito raramente ultimamente). Portanto, podem ocorrer erros em sua operação - o autor escreve que às vezes o perf-tools causa kernel panic.
Um utilitário que prevê quantos recursos de computação o código de máquina exigirá em diferentes CPUs. Ela aprecia Instruções por ciclo (IPC) e a carga no hardware que um determinado aplicativo gera.
llvm-mca foi apresentado em 2018 como parte do projeto LLVM, que está desenvolvendo um sistema universal para análise, transformação e otimização de programas. Sabe-se que os autores do llvm-mca se inspiraram em uma solução para análise de desempenho de software IACA da Intel e procurou criar uma alternativa. E de acordo com os usuários, o resultado da ferramenta (seu layout e quantidade) realmente se assemelha ao IACA - exemplo pode ser encontrado aqui. No entanto, llvm-mca só aceita Sintaxe da AT&T, então você provavelmente terá que usar conversores para trabalhar com ele.
Sobre o que escrevemos em nossos blogs e redes sociais: