Perf- Uma ferramenta de monitoramento e análise de desempenho para Linux
- 1449
- 452
- Maurice Champlin
Quando falamos de desempenho na computação, nos referimos ao relacionamento entre nossos recursos e as tarefas que eles nos permitem concluir em um determinado período de tempo.
Perf- Uma ferramenta de monitoramento e análise de desempenho para LinuxEm um dia de competição ferozes entre empresas, é importante que aprendamos a usar o que temos da melhor maneira possível. O desperdício de recursos de hardware ou software, ou a falta de capacidade de saber como usá -los com mais eficiência, acaba sendo uma perda que simplesmente não podemos pagar se queremos estar no topo do nosso jogo.
Ao mesmo tempo, devemos ter cuidado para não levar nossos recursos a um limite onde o uso sustentado produzirá danos irreparáveis.
Neste artigo, apresentaremos uma ferramenta de análise de desempenho relativamente nova e forneceremos dicas que você pode usar para monitorar seus sistemas Linux, incluindo hardware e aplicativos. Isso o ajudará a garantir que eles operem para que você seja capaz de produzir os resultados desejados sem desperdiçar recursos ou sua própria energia.
Apresentando e instalando Perf no Linux
Entre outros, o Linux fornece uma ferramenta de monitoramento e análise de desempenho chamada convenientemente perf. Então, o que distingue perf de outras ferramentas conhecidas com as quais você já está familiarizado?
A resposta é que perf Fornece acesso à unidade de monitoramento de desempenho na CPU e, portanto, nos permite dar uma olhada no comportamento do hardware e em seus eventos associados.
Além disso, também pode monitorar eventos de software e criar relatórios a partir dos dados que são coletados.
Você pode instalar perf Nas distribuições baseadas em RPM com:
# yum update && yum install Perf [CENTOS / RHEL / Fedora] # dnf update && dnf install perf [Fedora 23+ lançamentos]
Em Debian e derivados:
# sudo aptitude update && sudo aptitude install linux-tools-$ (uname -r) linux-tools-generic
Se uname -r
No comando acima, retorna seqüências extras além da versão real (3.2.0-23-Generic no meu caso), você pode ter que digitar Linux-Tools-3.2.0-23 Em vez de usar a saída de uname.
Também é importante notar que perf produz resultados incompletos quando executados em um convidado em cima do VirtualBox ou VMware, pois eles não permitem o acesso a contadores de hardware como outras tecnologias de virtualização (como KVM ou Xen).
Além disso, lembre -se de que alguns perf Os comandos podem ser restritos à raiz por padrão, que podem ser desativados (até que o sistema seja reiniciado) fazendo:
# eco 0>/proc/sys/kernel/perf_event_paranoid
Se você precisar desativar paranóico modo permanentemente, atualize a seguinte configuração em /etc/sysctl.conf arquivo.
núcleo.perf_event_paranoid = 0
Subcomando
Depois de instalar perf, Você pode consultar a página do Homem para uma lista de subcomandos disponíveis (você pode pensar em subcomando como opções especiais que abrem uma janela específica para o sistema). Para obter melhores e mais completos resultados, use perf como raiz ou através sudo.
Lista de perf
Lista de perf (sem opções) retorna todos os tipos de eventos simbólicos (lista longa). Se você deseja ver a lista de eventos disponíveis em uma categoria específica, use perf Lista seguida pelo nome da categoria ([hw | sw | cache | tracepoint | pmu | event_glob]), como:
Lista de exibição de eventos predefinidos de software no Linux:
# Perf List SWListar eventos predefinidos de software no Linux
Perf Stat
perf O STAT executa um comando e coleta estatísticas de desempenho do Linux durante a execução de tal comando. O que acontece em nosso sistema quando corremos dd?
# perf stat dd if =/dev/zero de = teste.iso bs = 10m contagem = 1Coleta estatísticas de desempenho do comando linux
As estatísticas mostradas acima indicam, entre outras coisas:
- A execução do dd Comando assumido 21.812281 milissegundos da CPU. Se dividirmos esse número pelo valor de "tempo decorrido" segundos "abaixo (23.914596 milissegundos), ele produz 0.912 (CPU utilizado).
- Enquanto o comando foi executado, 15 troca de contexto (também conhecida como interruptores de processo) indica que as CPUs foram alteradas 15 vezes de um processo (ou thread) para outro.
- 2 Migrações da CPU é o resultado esperado quando, em uma CPU de 2 núcleos, a carga de trabalho é distribuída uniformemente entre o número de núcleos.
Durante esse tempo (21.812281 milissegundos), o número total de ciclos de CPU que foram consumidos foi 62.025.623, que dividido por 0.021812281 segundos dá 2.843 Ghz. - Se dividirmos o número de ciclos pela contagem total de instruções, obtemos 4.9 Ciclos por instrução, o que significa que cada instrução levou quase 5 ciclos de CPU para concluir (em média). Podemos culpar isso (pelo menos em parte) no número de galhos e acidentes de galhos (veja abaixo), que acabam desperdiçando ou usando ciclos de CPU de uso.
- Como o comando foi executado, um total de 3.552.630 ramos foram encontrados. Esta é a representação no nível da CPU de pontos de decisão e loops no código. Quanto mais ramos, menor o desempenho. Para compensar isso, todas as CPUs modernas tentam prever o fluxo que o código levará. 51.348 Misses de ramificação indicam que o recurso de previsão estava errado 1.45% do tempo.
O mesmo princípio se aplica à coleta de estatísticas (ou em outras palavras, perfil) enquanto um aplicativo está em execução. Basta iniciar o aplicativo desejado e após um período razoável de tempo (que depende de você) fechar -o, e perf exibirá as estatísticas na tela. Ao analisar essas estatísticas, você pode identificar possíveis problemas.
Perf top
Perf top é semelhante ao comando de topo, na medida em que exibe um perfil de sistema quase em tempo real (também conhecido como análise ao vivo).
Com o -a
opção você exibirá todos os tipos de eventos conhecidos, enquanto o -e
a opção permitirá que você escolha uma categoria de evento específica (conforme retornado por Lista de perf):
Exibirá o evento de todos os ciclos.
Perf top -a
Exibirá todos os eventos relacionados à CPU-Clock.
Perf top -e CPU -CLOCKAnálise ao vivo do desempenho do Linux
A primeira coluna na saída acima representa a porcentagem de amostras coletadas desde o início da corrida, agrupadas por símbolo de função e objeto compartilhado. Mais opções estão disponíveis em Man Perf-top.
Perf Record
perf O registro executa um comando e salva os dados estatísticos em um arquivo nomeado perf.dados Dentro do diretório de trabalho atual. É executado de maneira semelhante a Perf Stat.
Tipo Perf Record seguido de um comando:
# perf recorde dd if =/dev/null de = teste.iso bs = 10m contagem = 1Dados estatísticos de comando de gravação
Relatório de perf
relatório de perf formato os dados coletados em perf.dados Acima em um relatório de desempenho:
# sudo report de perfRelatório de desempenho do Perf Linux
Tudo o que precede Subcomando Tenha uma página de homem dedicado que pode ser invocado como:
# Man Perf-SubCommand
onde Subcomando é também lista, Estado, principal, registro, ou relatório. Estes são os subcomandos mais frequentemente usados; Outros estão listados na documentação (consulte a seção de resumo do link).
Resumo
Neste guia, apresentamos você a perf, Uma ferramenta de monitoramento e análise de desempenho para Linux. Nós o encorajamos a se familiarizar com sua documentação, que é mantida em https: // Perf.Wiki.núcleo.org.
Se você encontrar aplicativos que estão consumindo uma alta porcentagem de recursos, considere modificar o código -fonte ou usar outras alternativas.
Se você tiver dúvidas sobre este artigo ou sugestões para melhorar, somos todos ouvidos. Sinta -se à vontade para chegar a nós usando o formulário de comentário abaixo.
Torne -se um administrador de sistema certificado Linux- « Implementando controle de acesso obrigatório com Selinux ou Apparmor no Linux
- Como instalar o Cygwin, um ambiente de linha de comando do tipo Linux para Windows »