Введение
В этом лабораторном занятии мы узнаем, как определить, включена ли и доступна ли на вашей системе мощная утилита трассировки Linux-ядра ftrace. Сначала мы проверим каталог /sys/kernel/debug/tracing, который является основным интерфейсом для взаимодействия с ftrace.
После первоначальной проверки мы воспользуемся инструментом trace-cmd для дальнейшей проверки функциональности ftrace и вывода списка доступных опций трассировки. Наконец, мы проверим соответствующие параметры конфигурации в файловой системе /proc/sys/kernel, чтобы получить более глубокое понимание настройки ftrace.
Проверьте статус 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 присутствует и готова к дальнейшему взаимодействию.



