Esta seção faz principalmente uma breve introdução ao Linux perf, do ponto de vista do que é, para que pode ser usado e da perspectiva de usar a atenção, como uma cunha para o reconhecimento inicial do Linux perf.
@autor: Mercury_Lc
Linux perf (perfilador de desempenho) é uma poderosa ferramenta de análise de desempenho usada para ajudar os desenvolvedores a diagnosticar, ajustar e monitorar problemas de desempenho de sistemas e aplicativos Linux . Ele implementa uma variedade de métodos de coleta de dados baseados em contadores de desempenho de hardware (contadores de desempenho de hardware), pontos de rastreamento e medições de software para analisar vários fenômenos no sistema. A ferramenta perf está integrada no kernel Linux, principalmente através do subsistema perf_event.
Os contadores de desempenho são registros de hardware da CPU que contam eventos de hardware, como instruções executadas, falhas de cache ou ramificações mal previstas. Eles formam a base para a análise de aplicações para rastrear o fluxo de controle dinâmico e identificar pontos críticos. perf fornece uma abstração rica de uso geral sobre funções específicas de hardware.
Em geral, perf pode analisar o desempenho do sistema em diferentes níveis, incluindo recursos como CPU, memória, E/S e bloqueios. Você pode usar perf para várias tarefas, como criação de perfil de aplicativos, visualização de eventos de hardware (como falhas de cache, previsões incorretas de ramificação, etc.) e chamadas de sistema, rastreamento de eventos de kernel e de espaço do usuário e geração de relatórios de desempenho, etc.
perf fornece uma variedade de subcomandos para atender a diferentes necessidades de análise de desempenho, como:
● perf stat: coleta e exibe estatísticas de contadores de desempenho durante a execução.
● registro perf: registra informações de amostra de evento.
● relatório de desempenho: gera um relatório de desempenho com base nos dados registrados no registro de desempenho.
● perf annotate: Anote e analise arquivos binários.
● perf top: Exibição em tempo real da atividade do sistema e dos dados do contador de desempenho.
● rastreamento de desempenho: coleta, analisa, exibe ou processa dados de desempenho de rastreamento do kernel e do espaço do usuário.
● banco de desempenho: execute vários benchmarks integrados.
O acima pode ser obtido através de perf -h após a instalação do perf:
[root ~]# perf -h
usage: perf [--version] [--help] [OPTIONS] COMMAND [ARGS]
The most commonly used perf commands are:
annotate Read perf.data (created by perf record) and display annotated code
archive Create archive with object files with build-ids found in perf.data file
bench General framework for benchmark suites
buildid-cache Manage build-id cache.
buildid-list List the buildids in a perf.data file
c2c Shared Data C2C/HITM Analyzer.
config Get and set variables in a configuration file.
data Data file related processing
diff Read perf.data files and display the differential profile
evlist List the event names in a perf.data file
ftrace simple wrapper for kernel's ftrace functionality
inject Filter to augment the events stream with additional information
kallsyms Searches running kernel for symbols
kmem Tool to trace/measure kernel memory properties
kvm Tool to trace/measure kvm guest os
list List all symbolic event types
lock Analyze lock events
mem Profile memory accesses
record Run a command and record its profile into perf.data
report Read perf.data (created by perf record) and display the profile
sched Tool to trace/measure scheduler properties (latencies)
script Read perf.data (created by perf record) and display trace output
stat Run a command and gather performance counter statistics
test Runs sanity tests.
timechart Tool to visualize total system behavior during a workload
top System profiling tool.
version display the version of perf binary
probe Define new dynamic tracepoints
trace strace inspired tool
See 'perf help COMMAND' for more information on a specific command.
Deve-se observar que antes de usar perf, você deve garantir que o kernel do sistema suporta o subsistema perf_event. Ao usar o comando perf, você geralmente precisa ter autoridade root ou pertencer a um grupo de usuários específico (como: perf-users).
Resumindo, Linux perf é uma poderosa ferramenta de análise de desempenho que pode ajudar os desenvolvedores a localizar problemas de desempenho, otimizar o desempenho do sistema e melhorar a eficiência operacional do sistema e dos aplicativos.
Referência
https://perf.wiki.kernel.org/index.php/Main_Page