C.2. Обработчики

Если файловая система debugfs смонтирована в /sys/kernel/debug, обработчики можно будет найти в /sys/kernel/debug/tracing/. Подкаталог events содержит полный список событий, а если был загружен модуль gfs2 — то и каталог gfs2 с отдельными подкаталогами для каждого события. Содержимое /sys/kernel/debug/tracing/events/gfs2 может выглядеть примерно так:
[root@chywoon gfs2]# ls
enable            gfs2_bmap       gfs2_glock_queue         gfs2_log_flush
filter            gfs2_demote_rq  gfs2_glock_state_change  gfs2_pin
gfs2_block_alloc  gfs2_glock_put  gfs2_log_blocks          gfs2_promote
Чтобы включить все обработчики событий GFS2, выполните:
[root@chywoon gfs2]# echo -n 1 >/sys/kernel/debug/tracing/events/gfs2/enable
Чтобы включить конкретный обработчик, перейдите в его подкаталог и измените enable так же, как это сделано выше. Аналогично можно настроить filter для всех обработчиков в /sys/kernel/debug/tracing/events/gfs2/filter или по отдельности в подкаталогах.
Обработчики возвращают данные в двоичном формате или ASCII. Двоичный интерфейс здесь не рассматривается, а для просмотра данных ASCII есть два способа: первый заключается в выводе содержимого кольцевого буфера, а второй возвращает все данные. Для просмотра данных в буфере выполните:
[root@chywoon gfs2]# cat /sys/kernel/debug/tracing/trace
Если интересующий процесс уже выполняется на протяжении какого-то времени, команда вернет последние данные в буфере. Второй способ позволяет следить за событиями в реальном времени, выполняя чтение из файла /sys/kernel/debug/tracing/trace_pipe. По мере чтения событий они будут удаляться из файла. Формат вывода в обоих случаях идентичен.
Наблюдение за процессами можно вести при помощи утилиты trace-cmd (см. Раздел C.10, «Дополнительные ресурсы»), которая перехватывает события аналогично тому, как это делает strace, и поможет понять, что делает процесс в заданное время.