stringtranslate.com

ftrace

ftrace ( Function Tracer ) — это платформа трассировки для ядра Linux . Хотя его первоначальное название, Function Tracer, произошло от способности ftrace записывать информацию, связанную с различными вызовами функций , выполняемыми во время работы ядра , возможности трассировки ftrace охватывают гораздо более широкий диапазон внутренних операций ядра. [2] [3]

Подробности

Благодаря различным плагинам трассировки ftrace может быть нацелен на различные статические точки трассировки , такие как события планирования , прерывания , ввод-вывод с отображением в памяти , переходы между состояниями питания процессора и операции, связанные с файловыми системами и виртуализацией . Кроме того, доступно динамическое отслеживание вызовов функций ядра, которое при необходимости можно ограничить подмножеством функций с помощью globs , а также с возможностью создания графиков вызовов и предоставления отчетов об использовании стека . В то же время ftrace можно использовать для измерения различных задержек в ядре Linux, например, для определения продолжительности отключения прерываний или вытеснения . [2] [4] [5] : 3–11, 14, 18 

Ядро Linux с поддержкой ftrace создается путем включения параметра конфигурации ядра CONFIG_FUNCTION_TRACER . Все взаимодействие с ftrace во время выполнения осуществляется через доступные для чтения и записи виртуальные файлы , содержащиеся в специально смонтированной файловой системе debugfs ; в результате для работы ftrace не требуются специальные утилиты пользовательского пространства . [2] [3] [6] Однако существуют дополнительные утилиты пользовательского пространства, которые предоставляют более расширенные функции для записи, анализа и визуализации данных; примерами таких утилит являются трассировка-cmd и KernelShark . [2] [5] : 31–47  [7] [8]

Внутри себя ftrace полагается на механизм профилирования gcc для добавления машинных инструкций к скомпилированным версиям всех функций ядра уровня исходного кода , которые перенаправляют выполнение функций на батуты ftrace и плагины трассировки, которые выполняют фактическую трассировку. Эти инструкции « точки входа », созданные gcc, изменяются с помощью ftrace при загрузке ядра и изменяются позже во время выполнения с помощью ftrace между NOP и фактическими переходами к трамплинам трассировки, в зависимости от типов трассировки и опций, настроенных во время выполнения. [9] [10]

ftrace разработан главным образом Стивеном Ростедтом и был объединен с основной веткой ядра Linux в версии ядра 2.6.27, выпущенной 9 октября 2008 года. [11]

Смотрите также

Рекомендации

  1. ^ «Исходный код ядра Linux: файл ядра/КОПИРОВАНИЕ» . ядро.орг . 13 марта 1994 года . Проверено 11 июня 2016 г.
  2. ^ abcd Джейк Эдж (13 марта 2009 г.). «Взгляд на ftrace». LWN.net . Проверено 23 июля 2014 г.
  3. ↑ ab Стивен Ростедт (16 июня 2014 г.). «Документация ядра Linux: Documentation/trace/ftrace.txt». ядро.org . Проверено 23 июля 2014 г.
  4. ^ «Документация Red Hat Enterprise MRG 2, раздел 3.8. Использование утилиты ftrace для отслеживания задержек» . Красная Шапка . 23 мая 2014 года . Проверено 24 июля 2014 г.
  5. ↑ ab Стивен Ростедт (18 октября 2010 г.). «Ftrace: трассировка ядра Linux» (PDF) . linuxfoundation.org . Архивировано из оригинала (PDF) 8 марта 2013 года . Проверено 23 июля 2014 г.
  6. ^ «Документация Red Hat Enterprise Linux 6, раздел 6.5. ftrace» . Красная Шапка . 14 марта 2014 года . Проверено 23 июля 2014 г.
  7. Стивен Ростедт (20 октября 2010 г.). «trace-cmd: интерфейс для Ftrace». LWN.net . Проверено 19 января 2015 г.
  8. Стивен Ростедт (2 февраля 2011 г.). «Использование KernelShark для анализа планировщика реального времени». LWN.net . Проверено 11 июня 2016 г.
  9. Стивен Ростедт (5 января 2015 г.). «Ftrace Kernel Hooks: больше, чем просто трассировка» (PDF) . linuxplumbersconf.org . стр. 6–12, 24, 34, 56–58 . Проверено 11 июня 2016 г.
  10. Тим Берд (1 ноября 2012 г.). «Измерение продолжительности функции с помощью Ftrace» (PDF) . elinux.org . стр. 5–6, 12–14 . Проверено 11 июня 2016 г.
  11. ^ «Ядро Linux 2.6.27, раздел 1.7. ftrace, поддержка sysprof» . kernelnewbies.org . 9 октября 2008 года . Проверено 23 июля 2014 г.

Внешние ссылки