Continuamos a falar sobre ferramentas para avaliação de desempenho da CPU em máquinas Linux. Hoje no material: temci, uarch-bench, likwid, perf-tools e llvm-mca.
Mais benchmarks:
Foto — — Unsplash
Este é uma ferramenta para avaliar o tempo de execução de dois programas. Na prática, permite comparar o tempo de execução de dois aplicativos. O autor da utilidade é um estudante da Alemanha, Johannes Bechberger, que desenvolveu-a como parte de seu trabalho de conclusão de curso em 2016. Hoje a ferramenta é licenciada sob a GNU General Public License.
Johannes queria criar uma ferramenta que permitisse medir o desempenho de um sistema computacional em um ambiente controlado. Portanto, uma das principais características do temci é a capacidade de configurar o ambiente de teste. Por exemplo, : alterar as configurações do gerenciador de frequência da CPU, desativar e os caches L1 e L2, desativar o modo turbo em processadores Intel, entre outros. Para benchmark, o temci utiliza as ferramentas , e .
Assim funciona a utilidade 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 os resultados do benchmarking, o sistema gera com diagramas, tabelas e gráficos, o que diferencia o temci de soluções similares.
Entre as desvantagens do temci, está sua 'juventude'. Devido a isso, ele as configurações de hardware e software. Por exemplo, é difícil executá-lo no macOS e em sistemas com processadores ARM, algumas funções não estão disponíveis. No futuro, a situação pode mudar, pois o autor está desenvolvendo ativamente o projeto, e o número de estrelas no GitHub está aumentando gradualmente — recentemente, o temci foi até no Hacker News.
Utilitário para avaliar o desempenho de funções de baixo nível da CPU, desenvolvido pelo engenheiro Travis Downs (). Recentemente, ele tem seu blog no GitHub Pages, onde fala sobre ferramentas para benchmarking e outros assuntos relacionados. Em geral, o uarch-bench ainda está começando a ganhar popularidade, mas já é frequentemente mencionado por membros do Hacker News em tópicos relevantes como uma ferramenta essencial para benchmarking.
O uarch-bench permite avaliar o desempenho da memória, a velocidade de carregamento paralelo de dados e a eficiência da limpeza. Os resultados do benchmarking gerados pelo programa podem ser encontrados na parte inferior da página.
Vale ressaltar que o uarch-bench, assim como o temci, a função Intel Turbo Boost (que aumenta automaticamente a frequência do processador sob carga) para que os resultados dos testes sejam consistentes.
Atualmente, o projeto está em estágios iniciais de desenvolvimento, portanto, o uarch-bench não possui documentação detalhada, e podem ocorrer bugs em seu funcionamento — por exemplo, ao rodar em Ryzen. Além disso, apenas benchmarks para arquiteturas x86 são suportados. O autor promete adicionar mais funcionalidades no futuro e convida outros a se juntar ao desenvolvimento.
É um conjunto de ferramentas para avaliar o desempenho de máquinas Linux com processadores Intel, AMD e ARMv8. Foi criado sob a égide do Ministério Federal da Educação e Pesquisa da Alemanha em 2017 e disponibilizado como open source.
Entre as ferramentas do likwid, destaca-se o likwid-powermeter, que fornece informações dos registros RAPL sobre o consumo de energia do sistema, assim como o likwid-setFrequencies — que permite controlar a frequência do processador. Você pode encontrar a lista completa .
Esse instrumento é utilizado por engenheiros que trabalham em pesquisa na área de HPC. Por exemplo, com o likwid um grupo de especialistas do Centro de Computação Regional da Universidade de Erlangen-Nuremberg (RRZE) na Alemanha. Este grupo também participa ativamente do desenvolvimento desse conjunto de ferramentas.

Foto — — Unsplash
Esta ferramenta de análise de desempenho para servidores Linux Brendan Gregg. Ele é um dos desenvolvedores — um framework de rastreamento dinâmico para depuração de aplicativos em tempo real.
Os perf-tools são baseados nos subsistemas do kernel perf_events e ftrace. Suas utilitários permitem analisar a latência de entrada/saída (iosnoop), rastrear argumentos de chamadas do sistema (unccount, funcslower, funcgraph e functrace) e coletar estatísticas de "acertos" no cache de arquivos (cachestat). No último caso, o comando fica assim:
# ./cachestat -t
Counting cache functions... Output every 1 seconds.
TIME HITS MISSES DIRTIES RATIO BUFFERS_MB CACHE_MB
08:28:57 415 0 0 100.0% 1 191
08:28:58 411 0 0 100.0% 1 191
08:28:59 362 97 0 78.9% 0 8
08:29:00 411 0 0 100.0% 0 9
Em torno da ferramenta, formou-se uma comunidade bastante ampla (). E há empresas que utilizam ativamente o perf-tools, como por exemplo . Mas a ferramenta está em desenvolvimento e modificação (embora nas últimas atualizações tenham sido bem raras). Portanto, é possível que ocorram erros em seu funcionamento — o autor menciona que às vezes o perf-tools provoca kernel panic.
Uma ferramenta que prevê quantos recursos computacionais serão necessários para o código de máquina em diferentes CPUs. Ela Instruções Por Ciclo () e a carga no hardware que cada aplicação gera.
O llvm-mca foi apresentado em 2018 como parte do projeto , que se dedica ao desenvolvimento de um sistema universal de análise, transformação e otimização de programas. Sabe-se que os autores do llvm-mca se inspiraram na solução de análise de desempenho de software e buscaram criar sua alternativa. E segundo usuários, as saídas da ferramenta (sua formatação e quantidade) realmente lembram o IACA — um exemplo . Contudo, o llvm-mca aceita apenas , portanto, para trabalhar com ele, provavelmente será necessário usar conversores.
Sobre o que escrevemos em nossos blogs e redes sociais:
![]()
![]()
![]()
![]()
![]()
Nós da 1cloud.ru oferecemos um serviço gratuito de «». Gerir registros DNS conosco é possível em um único painel de controle.
Fonte: habr.com
