Como verificar se o ftrace do kernel está habilitado no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, exploraremos como determinar se a poderosa ferramenta de rastreamento do kernel Linux, ftrace, está habilitada e acessível em seu sistema. Começaremos examinando o diretório /sys/kernel/debug/tracing, que serve como a interface primária para interagir com o ftrace.

Após a verificação inicial, utilizaremos a ferramenta trace-cmd para verificar ainda mais a funcionalidade do ftrace e listar as opções de rastreamento disponíveis. Finalmente, inspecionaremos os parâmetros de configuração relevantes dentro do sistema de arquivos /proc/sys/kernel para obter uma compreensão mais profunda da configuração do ftrace.

Verificar o status do ftrace com ls /sys/kernel/debug/tracing

Nesta etapa, começaremos a explorar o ftrace, uma poderosa ferramenta de rastreamento integrada ao kernel Linux. O ftrace permite que desenvolvedores e administradores de sistema compreendam o comportamento em tempo de execução do kernel.

A interface primária para interagir com o ftrace é através do sistema de arquivos de depuração (debug file system), especificamente localizado em /sys/kernel/debug/tracing.

Primeiro, vamos verificar se o sistema de arquivos de depuração está montado e se o diretório tracing existe. Podemos usar o comando ls para listar o conteúdo deste diretório.

Digite o seguinte comando em seu terminal e pressione Enter:

ls /sys/kernel/debug/tracing

Você deve ver uma lista de arquivos e diretórios relacionados ao ftrace. A saída exata pode variar dependendo da versão e configuração do kernel, mas deve ser semelhante a isto:

README                       events                       options
available_events             free_buffer                  per_cpu
available_filter_functions   function_graph_max_depth     printk_formats
available_tracers            function_graph_tracer        set_event
buffer_size_kb               function_profile_dynamic     set_filter
buffer_total_size_kb         function_trace               set_ftrace_filter
current_tracer               instances                    set_ftrace_notrace
dynamic_filter               kprobe_events                set_graph_function
enabled                      kprobe_profile               set_graph_notrace
error_log                    max_graph_depth              set_tracer
event_sources                options                      snapshot
tracing_cpumask              tracing_max_latency          tracing_on
tracing_thresh               trace                        trace_clock
trace_marker                 trace_options                trace_pipe
trace_stat

Se você vir uma saída semelhante, isso significa que a interface ftrace está disponível em seu sistema. Se você receber um erro como "No such file or directory" (Nenhum arquivo ou diretório deste tipo), isso pode indicar que o sistema de arquivos de depuração não está montado ou que o ftrace não está habilitado no kernel. No entanto, no ambiente LabEx, ele deve estar disponível.

Este diretório contém vários arquivos que controlam o comportamento do ftrace e fornecem dados de rastreamento. Exploraremos alguns desses arquivos em etapas posteriores.

Por enquanto, simplesmente verificar a existência deste diretório e seu conteúdo confirma que você pode interagir com o ftrace.

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

Verificar ftrace com trace-cmd list

Na etapa anterior, confirmamos a presença da interface ftrace no sistema de arquivos de depuração. Agora, vamos usar uma ferramenta de linha de comando chamada trace-cmd para interagir com o ftrace. trace-cmd é um utilitário do espaço do usuário que simplifica o processo de configuração e coleta de dados do ftrace.

Uma das funções úteis do trace-cmd é listar os eventos e rastreadores de rastreamento disponíveis. Isso nos ajuda a entender o que podemos monitorar com o ftrace.

Vamos usar trace-cmd list para ver os rastreadores disponíveis. Rastreadores são diferentes modos de operação para o ftrace, permitindo que você rastreie diferentes aspectos do kernel.

Digite o seguinte comando em seu terminal e pressione Enter:

trace-cmd list -t

A opção -t informa ao trace-cmd para listar os rastreadores disponíveis. Você deve ver uma saída semelhante a esta:

List of available tracers:
 blk
 function
 function_graph
 irqsoff
 nop
 preemptirqsoff
 wakeup
 wakeup_rt

Esta saída mostra os diferentes rastreadores disponíveis neste sistema. Por exemplo, function rastreia chamadas de função, e function_graph rastreia chamadas de função e seu gráfico de chamadas.

Em seguida, vamos listar os eventos disponíveis que podem ser rastreados. Eventos são pontos específicos no kernel onde as informações de rastreamento podem ser coletadas.

Digite o seguinte comando e pressione Enter:

trace-cmd list -e

A opção -e informa ao trace-cmd para listar os eventos disponíveis. Este comando produzirá uma longa lista de eventos, categorizados por subsistemas (por exemplo, sched, syscalls, ext4). A saída será semelhante a esta (apenas uma pequena parte é mostrada):

List of available events:
  ftrace:
    ftrace_buffer_overrun
    ftrace_inject_event
    ftrace_print_event
  kmem:
    kmem_cache_alloc
    kmem_cache_alloc_node
    kmem_cache_free
    kmem_cache_free_page
    kmem_cache_free_pages
    kmem_cache_grow
    kmem_cache_shrink
    mm_page_alloc
    mm_page_alloc_zone_locked
    mm_page_free
    mm_page_free_batched
    mm_page_pcpu_drain
  ... (many more events)

Você pode rolar pela saída para ver o vasto número de eventos disponíveis para rastreamento. Isso demonstra a visibilidade detalhada que o ftrace fornece sobre as operações do kernel.

Usar trace-cmd list é uma boa maneira de obter uma visão geral do que o ftrace pode monitorar em seu sistema específico.

Clique em Continuar para prosseguir.

Inspecionar a configuração do ftrace em /proc/sys/kernel

Além da interface do sistema de arquivos de depuração em /sys/kernel/debug/tracing, algumas configurações relacionadas ao ftrace também podem ser encontradas no diretório /proc/sys/kernel. O sistema de arquivos /proc é um sistema de arquivos virtual que fornece informações sobre processos e outras informações do sistema. O diretório /proc/sys contém arquivos que permitem visualizar e modificar os parâmetros do kernel em tempo de execução.

Vamos inspecionar alguns arquivos em /proc/sys/kernel que estão relacionados ao ftrace. Podemos usar o comando cat para visualizar o conteúdo desses arquivos.

Primeiro, vamos verificar o arquivo ftrace_enabled. Este arquivo indica se o ftrace está atualmente habilitado no kernel.

Digite o seguinte comando em seu terminal e pressione Enter:

cat /proc/sys/kernel/ftrace_enabled

Você deve ver uma saída como esta:

1

Um valor de 1 significa que o ftrace está habilitado, e 0 significa que está desabilitado.

Em seguida, vamos olhar para o arquivo ftrace_dump_on_oops. Este arquivo controla se o buffer do ftrace é despejado no console quando ocorre um kernel oops (um erro do kernel).

Digite o seguinte comando e pressione Enter:

cat /proc/sys/kernel/ftrace_dump_on_oops

A saída provavelmente será:

1

Um valor de 1 significa que o buffer do ftrace será despejado em um kernel oops, o que pode ser útil para depuração.

Finalmente, vamos verificar o arquivo ftrace_filter_notrace_regex. Este arquivo contém uma expressão regular que pode ser usada para filtrar quais funções não são rastreadas ao usar o rastreamento de função.

Digite o seguinte comando e pressione Enter:

cat /proc/sys/kernel/ftrace_filter_notrace_regex

A saída pode estar vazia ou conter uma expressão regular, dependendo da configuração do sistema:

Esses arquivos em /proc/sys/kernel fornecem um vislumbre de algumas configurações globais do ftrace. Embora a configuração mais detalhada e o acesso aos dados ocorram através de /sys/kernel/debug/tracing, esses arquivos oferecem uma maneira rápida de verificar o status geral e alguns comportamentos básicos do ftrace.

Você agora explorou as principais interfaces para interagir com o ftrace: o sistema de arquivos de depuração e o diretório /proc/sys/kernel.

Clique em Continuar para concluir este laboratório.

Resumo

Neste laboratório, aprendemos como verificar se o utilitário ftrace do kernel está habilitado e acessível em um sistema Linux. Começamos explorando a interface principal do ftrace localizada dentro do sistema de arquivos de depuração em /sys/kernel/debug/tracing. Ao listar o conteúdo deste diretório usando o comando ls, verificamos a presença de arquivos e diretórios relacionados ao ftrace, indicando que a interface do ftrace está disponível.

Esta etapa inicial confirmou o requisito fundamental para usar o ftrace: o sistema de arquivos de depuração deve estar montado e o diretório de rastreamento deve existir. Ver os vários arquivos de configuração e controle do ftrace na saída de ls /sys/kernel/debug/tracing forneceu uma confirmação visual de que a infraestrutura do ftrace está presente e pronta para interação adicional.