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.

Mais referências:

Benchmarks para servidores Linux: uma seleção de ferramentas abertas
Фото - Lucas Blazek - Unsplash

temci

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.

banco uarch

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.

como

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.

Benchmarks para servidores Linux: uma seleção de ferramentas abertas
Фото - Clem Onojeghuo - Unsplash

ferramentas de perf

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:

# ./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

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.

llvm-mca

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:

Benchmarks para servidores Linux: uma seleção de ferramentas abertas "Esteira. Modelo de Wall Street" ou como otimizar os custos da nuvem

Benchmarks para servidores Linux: uma seleção de ferramentas abertas Como proteger seu sistema Linux: 10 dicas
Benchmarks para servidores Linux: uma seleção de ferramentas abertas Minimizando riscos: como não perder seus dados

Benchmarks para servidores Linux: uma seleção de ferramentas abertas Livros para quem já está envolvido com administração de sistemas ou está apenas planejando começar
Benchmarks para servidores Linux: uma seleção de ferramentas abertas Seleção: cinco livros e um curso sobre redes

Benchmarks para servidores Linux: uma seleção de ferramentas abertasNós da 1cloud.ru oferecemos um serviço gratuito “Hospedagem DNS" Você pode gerenciar registros DNS em uma única conta pessoal.

Fonte: habr.com

Adicionar um comentário