Como verificar se os contadores de desempenho do kernel estão ativos no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se os contadores de desempenho do kernel estão ativos no Linux. Você explorará como usar o comando perf stat para medir os contadores de desempenho durante a execução de comandos, verificar a configuração dos contadores de desempenho dentro do sistema de arquivos /sys/kernel e inspecionar os logs do kernel usando dmesg para mensagens relacionadas aos contadores de desempenho. Esta experiência prática fornecerá as habilidades necessárias para diagnosticar e entender o status do monitoramento de desempenho em seu sistema Linux.

Verificar contadores com perf stat

Nesta etapa, você aprenderá como usar o comando perf stat para medir os contadores de desempenho. Contadores de desempenho são registradores de hardware especiais que contam eventos específicos que ocorrem dentro da CPU, como o número de instruções executadas, falhas de cache ou previsões de desvio.

A ferramenta perf é um utilitário de linha de comando poderoso para análise de desempenho no Linux. perf stat é usado para executar um comando e coletar estatísticas de contadores de desempenho para a execução desse comando.

Vamos começar executando um comando simples e observando seus contadores de desempenho. Usaremos o comando ls, que lista o conteúdo do diretório.

Abra o terminal, caso ainda não o tenha feito. Você pode encontrar o ícone do Xfce Terminal no lado esquerdo da sua área de trabalho.

Agora, digite o seguinte comando e pressione Enter:

perf stat ls

Você deve ver uma saída semelhante a esta:

 Performance counter stats for 'ls':

          <placeholder>      task-clock (msec)         ##    <placeholder> CPUs utilized
          <placeholder>      context-switches          ##    <placeholder> /sec
          <placeholder>      cpu-migrations            ##    <placeholder> /sec
          <placeholder>      page-faults               ##    <placeholder> /sec
          <placeholder>      cycles                    ##    <placeholder> GHz
          <placeholder>      instructions              ##    <placeholder>  insns per cycle
          <placeholder>      branches                  ##    <placeholder> % of all instructions
          <placeholder>      branch-misses             ##    <placeholder> % of all branches

          <placeholder> msec task-clock                ##    <placeholder> CPUs utilized

Os números e eventos exatos podem variar dependendo do sistema e da execução específica, mas você deve ver uma lista de eventos de desempenho e suas contagens durante a execução do comando ls.

Alguns eventos comuns que você pode ver incluem:

  • task-clock: O tempo total que a tarefa esteve em execução em uma CPU.
  • cycles: O número de ciclos de CPU gastos.
  • instructions: O número de instruções executadas.
  • branch-misses: O número de vezes que uma previsão de desvio estava incorreta.

Compreender esses contadores pode ajudá-lo a identificar gargalos de desempenho em seu código ou sistema.

Você também pode executar perf stat em um comando mais complexo ou até mesmo em um script para analisar seu desempenho.

Por exemplo, vamos tentar executar perf stat em um comando sleep simples:

perf stat sleep 1

Isso medirá os contadores de desempenho enquanto o sistema dorme por 1 segundo. A saída mostrará os contadores para o processo sleep.

Experimente executar perf stat em diferentes comandos para ver como os contadores mudam.

Clique em Continuar para prosseguir para a próxima etapa.

Verificar a configuração dos contadores em /sys/kernel

Nesta etapa, você explorará como as configurações dos contadores de desempenho são expostas no sistema de arquivos /sys do kernel Linux. O sistema de arquivos /sys fornece uma interface para as estruturas de dados do kernel, permitindo que você inspecione e, às vezes, modifique os parâmetros do kernel.

As configurações dos contadores de desempenho, como se usuários não privilegiados podem acessar eventos brutos de contadores de desempenho, são frequentemente controladas por meio de arquivos em /sys/kernel/perf_event.

Vamos navegar para o diretório relevante e inspecionar um arquivo de configuração.

Primeiro, use o comando cd para alterar seu diretório atual para /sys/kernel/perf_event. Lembre-se de que seu diretório padrão é ~/project, então você precisa usar o caminho absoluto.

Digite o seguinte comando e pressione Enter:

cd /sys/kernel/perf_event

Agora você está no diretório /sys/kernel/perf_event. Você pode usar o comando ls para ver os arquivos dentro deste diretório:

ls

Você deve ver uma lista de arquivos, que pode incluir:

kptr_restrict  perf_event_paranoid  sysfs_deprecated

O arquivo que nos interessa é perf_event_paranoid. Este arquivo controla o nível de acesso que usuários não privilegiados têm aos eventos de desempenho. Um valor mais baixo significa menos paranoia (mais acesso) e um valor mais alto significa mais paranoia (menos acesso).

Vamos visualizar o conteúdo deste arquivo usando o comando cat:

cat perf_event_paranoid

A saída será um único número, normalmente entre -1 e 2.

<number>

Aqui está o que os diferentes valores geralmente significam:

  • -1: Permite que todos os usuários usem todos os recursos do perf.
  • 0: Permite que todos os usuários usem perf para medições por processo e por CPU.
  • 1: Permite que apenas usuários privilegiados (como root) usem perf para medições por processo e por CPU.
  • 2: Permite que apenas usuários privilegiados usem perf para medições por processo.

O valor padrão é frequentemente 2 por razões de segurança, impedindo que usuários não privilegiados usem potencialmente contadores de desempenho para obter informações sobre outros processos.

Compreender este arquivo ajuda você a ver como o sistema está configurado em relação ao acesso ao monitoramento de desempenho.

Clique em Continuar para prosseguir.

Inspecionar logs de contadores em dmesg

Nesta etapa, você aprenderá como usar o comando dmesg para visualizar as mensagens do kernel, que às vezes podem incluir informações relacionadas a contadores de desempenho ou eventos perf. dmesg é um comando que exibe as mensagens do buffer de anel do kernel. Essas mensagens são geradas pelo kernel durante a inicialização e o tempo de execução e podem conter informações valiosas para depuração e análise do sistema.

Embora o próprio perf geralmente produza estatísticas diretamente no terminal, a interação do kernel com o hardware de monitoramento de desempenho ou quaisquer problemas relacionados podem ser registrados no buffer de anel do kernel.

Para visualizar as mensagens do kernel, use o comando dmesg:

dmesg

Isso imprimirá uma quantidade potencialmente grande de saída no seu terminal, mostrando todas as mensagens do buffer de anel do kernel.

Para encontrar mensagens especificamente relacionadas a perf ou contadores de desempenho, você pode canalizar a saída de dmesg para o comando grep. grep é uma ferramenta poderosa para pesquisar texto usando padrões.

Vamos pesquisar mensagens contendo a palavra "perf":

dmesg | grep perf

Este comando faz o seguinte:

  • dmesg: Produz as mensagens do kernel.
  • |: Este é um pipe, que envia a saída do comando à esquerda como entrada para o comando à direita.
  • grep perf: Pesquisa na entrada linhas contendo a palavra "perf".

Você pode ver uma saída semelhante a esta (ou nada, dependendo dos eventos recentes do kernel):

[<placeholder>] perf: interrupt took too long (<placeholder> > <placeholder> ms), lowering kernel.perf_event_paranoid to <placeholder>

Esta mensagem de exemplo indica que uma interrupção de desempenho demorou muito e o kernel ajustou automaticamente a configuração perf_event_paranoid (que vimos na etapa anterior) para um valor menos restritivo para potencialmente mitigar o problema.

Você também pode pesquisar outros termos relacionados, como "performance" ou "counter":

dmesg | grep performance
dmesg | grep counter

Inspecionar a saída de dmesg pode ser útil para diagnosticar problemas relacionados ao monitoramento de desempenho ou entender como o kernel está interagindo com o hardware do contador de desempenho.

Clique em Continuar para concluir este laboratório.

Resumo

Neste laboratório, você aprendeu como verificar se os contadores de desempenho do kernel estão ativos no Linux. Você começou usando o comando perf stat para medir os contadores de desempenho para um comando simples como ls, observando a saída de vários eventos de desempenho e suas contagens. Isso demonstrou a funcionalidade básica da ferramenta perf para análise de desempenho.

O laboratório então guiou você pela verificação da configuração do contador de desempenho dentro do sistema de arquivos /sys/kernel e pela inspeção dos logs relacionados aos contadores na saída de dmesg. Essas etapas forneceram métodos para confirmar o suporte do sistema e o status ativo dos contadores de desempenho do kernel, oferecendo maneiras alternativas de avaliar sua disponibilidade além do comando perf stat.