Как проверить, включен ли ftrace ядра в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии мы узнаем, как определить, включена ли и доступна ли на вашей системе мощная утилита трассировки Linux-ядра ftrace. Сначала мы проверим каталог /sys/kernel/debug/tracing, который является основным интерфейсом для взаимодействия с ftrace.

После первоначальной проверки мы воспользуемся инструментом trace-cmd для дальнейшей проверки функциональности ftrace и вывода списка доступных опций трассировки. Наконец, мы проверим соответствующие параметры конфигурации в файловой системе /proc/sys/kernel, чтобы получить более глубокое понимание настройки ftrace.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") subgraph Lab Skills linux/echo -.-> lab-558792{{"Как проверить, включен ли ftrace ядра в Linux"}} linux/ls -.-> lab-558792{{"Как проверить, включен ли ftrace ядра в Linux"}} linux/cat -.-> lab-558792{{"Как проверить, включен ли ftrace ядра в Linux"}} linux/ps -.-> lab-558792{{"Как проверить, включен ли ftrace ядра в Linux"}} end

Проверка статуса ftrace с помощью команды ls /sys/kernel/debug/tracing

На этом этапе мы начнем изучать ftrace, мощную утилиту трассировки, встроенную в Linux-ядро. ftrace позволяет разработчикам и системным администраторам понять поведение ядра во время выполнения.

Основной интерфейс для взаимодействия с ftrace - это отладочная файловая система, расположенная по адресу /sys/kernel/debug/tracing.

Сначала проверим, смонтирована ли отладочная файловая система и существует ли каталог tracing. Мы можем использовать команду ls для вывода содержимого этого каталога.

Введите следующую команду в терминале и нажмите Enter:

ls /sys/kernel/debug/tracing

Вы должны увидеть список файлов и каталогов, связанных с ftrace. Точный вывод может отличаться в зависимости от версии ядра и его конфигурации, но он должен выглядеть приблизительно так:

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

Если вы видите похожий вывод, это означает, что интерфейс ftrace доступен на вашей системе. Если вы получаете ошибку типа "No such file or directory" (Такого файла или каталога не существует), это может означать, что отладочная файловая система не смонтирована или ftrace не включен в ядре. Однако в среде LabEx он должен быть доступен.

В этом каталоге содержатся различные файлы, которые управляют поведением ftrace и предоставляют данные трассировки. Мы рассмотрим некоторые из этих файлов на последующих этапах.

Пока что простая проверка существования этого каталога и его содержимого подтверждает, что вы можете взаимодействовать с ftrace.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка ftrace с помощью команды trace-cmd list

На предыдущем этапе мы подтвердили наличие интерфейса ftrace в отладочной файловой системе. Теперь давайте воспользуемся командной строкой инструмента trace-cmd для взаимодействия с ftrace. trace-cmd - это утилита пользовательского пространства, которая упрощает процесс настройки и сбора данных от ftrace.

Одной из полезных функций trace-cmd является вывод списка доступных событий трассировки и трасеров (tracers). Это помогает нам понять, что можно отслеживать с помощью ftrace.

Давайте используем команду trace-cmd list для просмотра доступных трасеров. Трасеры - это различные режимы работы ftrace, которые позволяют отслеживать разные аспекты работы ядра.

Введите следующую команду в терминале и нажмите Enter:

trace-cmd list -t

Опция -t сообщает trace-cmd вывести список доступных трасеров. Вы должны увидеть вывод, похожий на следующий:

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

Этот вывод показывает различные трасеры, доступные на этой системе. Например, function отслеживает вызовы функций, а function_graph отслеживает вызовы функций и их граф вызовов.

Далее, давайте выведем список доступных событий, которые можно отслеживать. События - это конкретные точки в ядре, где можно собирать информацию о трассировке.

Введите следующую команду и нажмите Enter:

trace-cmd list -e

Опция -e сообщает trace-cmd вывести список доступных событий. Эта команда выдаст длинный список событий, сгруппированных по подсистемам (например, sched, syscalls, ext4). Вывод будет выглядеть приблизительно так (показан только небольшой фрагмент):

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)

Вы можете прокрутить вывод, чтобы увидеть огромное количество доступных событий для трассировки. Это демонстрирует детальную видимость, которую ftrace предоставляет для операций ядра.

Использование команды trace-cmd list - это хороший способ получить обзор того, что ftrace может отслеживать на вашей конкретной системе.

Нажмите Продолжить, чтобы перейти дальше.

Проверка конфигурации ftrace в /proc/sys/kernel

В дополнение к интерфейсу отладочной файловой системы по адресу /sys/kernel/debug/tracing, некоторые настройки, связанные с ftrace, также можно найти в каталоге /proc/sys/kernel. Файловая система /proc - это виртуальная файловая система, которая предоставляет информацию о процессах и другой системной информации. Каталог /proc/sys содержит файлы, которые позволяют просматривать и изменять параметры ядра во время выполнения.

Давайте проверим некоторые файлы в /proc/sys/kernel, связанные с ftrace. Мы можем использовать команду cat для просмотра содержимого этих файлов.

Сначала проверим файл ftrace_enabled. Этот файл показывает, включен ли в данный момент ftrace в ядре.

Введите следующую команду в терминале и нажмите Enter:

cat /proc/sys/kernel/ftrace_enabled

Вы должны увидеть такой вывод:

1

Значение 1 означает, что ftrace включен, а 0 - что он отключен.

Далее, давайте посмотрим на файл ftrace_dump_on_oops. Этот файл контролирует, будет ли буфер ftrace выведен на консоль при возникновении ошибки ядра (kernel oops).

Введите следующую команду и нажмите Enter:

cat /proc/sys/kernel/ftrace_dump_on_oops

Вывод, скорее всего, будет таким:

1

Значение 1 означает, что буфер ftrace будет выведен при ошибке ядра, что может быть полезно для отладки.

Наконец, проверим файл ftrace_filter_notrace_regex. Этот файл содержит регулярное выражение, которое можно использовать для фильтрации функций, которые не будут отслеживаться при использовании трассировки функций.

Введите следующую команду и нажмите Enter:

cat /proc/sys/kernel/ftrace_filter_notrace_regex

Вывод может быть пустым или содержать регулярное выражение, в зависимости от конфигурации системы:

Эти файлы в /proc/sys/kernel дают представление о некоторых глобальных настройках ftrace. Хотя большинство детальных настроек и доступ к данным осуществляется через /sys/kernel/debug/tracing, эти файлы предоставляют быстрый способ проверить общий статус и некоторые базовые поведения ftrace.

Теперь вы исследовали основные интерфейсы для взаимодействия с ftrace: отладочную файловую систему и каталог /proc/sys/kernel.

Нажмите Продолжить, чтобы завершить этот практикум.

Резюме

В этом практикуме мы научились проверять, включена ли и доступна ли утилита ftrace ядра в системе Linux. Мы начали с исследования основного интерфейса ftrace, расположенного в отладочной файловой системе по адресу /sys/kernel/debug/tracing. С помощью команды ls для вывода содержимого этого каталога мы подтвердили наличие файлов и каталогов, связанных с ftrace, что означает, что интерфейс ftrace доступен.

Этот первый шаг подтвердил основное требование для использования ftrace: отладочная файловая система должна быть смонтирована, и каталог трассировки должен существовать. Видя различные файлы конфигурации и управления ftrace в выводе команды ls /sys/kernel/debug/tracing, мы получили визуальное подтверждение того, что инфраструктура ftrace присутствует и готова к дальнейшему взаимодействию.