ftrace
Разработчик(и) | Стивен Ростедт и другие |
---|---|
Первоначальный выпуск | 9 октября 2008 г |
Операционная система | Линукс |
Тип | Расширение ядра |
Лицензия | GNU GPL версия 2 [1] |
Веб-сайт | www |
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]
См. также
[ редактировать ]- DTrace — платформа трассировки для устранения неполадок ядра и приложений, изначально разработанная для Solaris.
- ktrace - утилита BSD Unix и Mac OS X, которая отслеживает взаимодействие ядра и программы.
- ltrace — утилита отладки Linux, отображает вызовы пользовательского приложения к общим библиотекам.
- strace — утилита отладки для Linux и некоторых других Unix-подобных систем, отслеживает системные вызовы, используемые программой, и все полученные сигналы.
- SystemTap — язык сценариев и утилита, используемая для инструментирования систем Linux.
Ссылки
[ редактировать ]- ^ «Исходный код ядра Linux: файл ядра/КОПИРОВАНИЕ» . ядро.орг . 13 марта 1994 года . Проверено 11 июня 2016 г.
- ^ Jump up to: а б с д Джейк Эдж (13 марта 2009 г.). «Взгляд на ftrace» . LWN.net . Проверено 23 июля 2014 г.
- ^ Jump up to: а б Стивен Ростедт (16 июня 2014 г.). «Документация ядра Linux: Documentation/trace/ftrace.txt» . ядро.орг . Проверено 23 июля 2014 г.
- ^ «Документация Red Hat Enterprise MRG 2, раздел 3.8. Использование утилиты ftrace для отслеживания задержек» . Красная шляпа . 23 мая 2014 года . Проверено 24 июля 2014 г.
- ^ Jump up to: а б Стивен Ростедт (18 октября 2010 г.). «Ftrace: трассировка ядра Linux» (PDF) . linuxfoundation.org . Архивировано из оригинала (PDF) 8 марта 2013 года . Проверено 23 июля 2014 г.
- ^ «Документация Red Hat Enterprise Linux 6, раздел 6.5. ftrace» . Красная шляпа . 14 марта 2014 года . Проверено 23 июля 2014 г.
- ^ Стивен Ростедт (20 октября 2010 г.). «trace-cmd: интерфейс для Ftrace» . LWN.net . Проверено 19 января 2015 г.
- ^ Стивен Ростедт (2 февраля 2011 г.). «Использование KernelShark для анализа планировщика реального времени» . LWN.net . Проверено 11 июня 2016 г.
- ^ Стивен Ростедт (5 января 2015 г.). «Перехватчики ядра Ftrace: больше, чем просто трассировка» (PDF) . linuxplumbersconf.org . стр. 6–12, 24, 34, 56–58 . Проверено 11 июня 2016 г.
- ^ Тим Берд (1 ноября 2012 г.). «Измерение продолжительности функции с помощью Ftrace» (PDF) . elinux.org . стр. 5–6, 12–14 . Проверено 11 июня 2016 г.
- ^ «Ядро Linux 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 г., Джонатан Корбет