ftrace

Утилита трассировки для ядра Linux

ftrace
Разработчик(и)Стивен Ростедт и другие
Первоначальный выпуск9 октября 2008 г. ; 15 лет назад ( 2008-10-09 )
Операционная системаЛинукс
ТипРасширение ядра
ЛицензияGNU GPL версия 2 [1]
Веб-сайтwww.kernel.org/doc/html/latest/trace/index.html

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] Однако существуют дополнительные утилиты пользовательского пространства, которые предоставляют более продвинутые возможности для записи, анализа и визуализации данных; примерами таких утилит являются trace-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]

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

  • DTrace  – фреймворк трассировки для устранения неполадок ядра и приложений, изначально разработанный для Solaris
  • ktrace  – утилита BSD Unix и Mac OS X, которая отслеживает взаимодействие ядра и программ
  • ltrace  — утилита отладки Linux, отображающая вызовы, которые пользовательское приложение делает к разделяемым библиотекам.
  • strace  – отладочная утилита для Linux и некоторых других Unix-подобных систем, отслеживает системные вызовы, используемые программой, и все полученные сигналы
  • SystemTap  — скриптовый язык и утилита, используемые для инструментирования систем Linux.

Ссылки

  1. ^ "Исходный код ядра Linux: файл kernel/COPYING". kernel.org . 13 марта 1994 г. . Получено 11 июня 2016 г. .
  2. ^ abcd Джейк Эдж (13 марта 2009 г.). "Взгляд на ftrace". LWN.net . Получено 23 июля 2014 г. .
  3. ^ ab Стивен Ростедт (16 июня 2014 г.). "Документация ядра Linux: Documentation/trace/ftrace.txt". kernel.org . Получено 23 июля 2014 г. .
  4. ^ "Документация Red Hat Enterprise MRG 2, Раздел 3.8. Использование утилиты ftrace для трассировки задержек". Red Hat . 23 мая 2014 г. . Получено 24 июля 2014 г. .
  5. ^ ab Steven Rostedt (18 октября 2010 г.). "Ftrace: Linux Kernel Tracing" (PDF) . linuxfoundation.org . Архивировано из оригинала (PDF) 8 марта 2013 г. . Получено 23 июля 2014 г. .
  6. ^ "Red Hat Enterprise Linux 6 documentation, Section 6.5. ftrace". Red Hat . 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 kernel 2.6.27, раздел 1.7. ftrace, поддержка sysprof". kernelnewbies.org . 9 октября 2008 г. . Получено 23 июля 2014 г. .
  • Отладка ядра с помощью Ftrace – часть 1 и часть 2, LWN.net , декабрь 2009 г., Стивен Ростедт
  • Секреты трассировщика функции Ftrace, LWN.net, 20 января 2010 г., Стивен Ростедт
  • Ftrace: Скрытый выключатель света, LWN.net, 13 августа 2014 г., Брендан Грегг
  • Источник ошибки повреждения e1000e, LWN.net, 21 октября 2008 г., Джонатан Корбет
Retrieved from "https://en.wikipedia.org/w/index.php?title=Ftrace&oldid=1129404139"