Perf- Uma ferramenta de monitoramento e análise de desempenho para Linux

Perf- Uma ferramenta de monitoramento e análise de desempenho para Linux

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 Linux

Em 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 SW 
Listar 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 = 1 
Coleta estatísticas de desempenho do comando linux

As estatísticas mostradas acima indicam, entre outras coisas:

  1. 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).
  2. 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.
  3. 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.
  4. 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.
  5. 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 -CLOCK 
Aná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 = 1 
Dados 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 perf 
Relató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