Repolode
janestreet

janestreet/magic-trace

Linux-профайлер, который с помощью Intel Processor Trace записывает каждый вызов функции в процессе и показывает его на интерактивной временной шкале.

Звёзды
6,347
Форки
223
Открытые issues
73
Последний коммит
19 дней назад

Что это?

magic-trace собирает и отображает высокодетализированные трассы работы процесса. В отличие от perf, который периодически снимает стеки вызовов, инструмент использует Intel Processor Trace, чтобы вести кольцевой буфер всего потока управления, а затем снимает его в выбранный момент. Снимок преобразуется в интерактивную временную шкалу стеков вызовов примерно за последние 10 мс по умолчанию; вызовы функций определяются с точностью около 40 нс.

К инструменту можно подключиться во время работы процесса, а затем нажать Ctrl+C, чтобы снять трассу в конце его выполнения. Также можно настроить триггер, который будет снимать буфер при вызове указанной функции. Трассы сохраняются в файлы trace.fxt.gz и открываются в браузерном просмотрщике magic-trace.org, созданном на основе форка Perfetto. Изменять приложение не требуется; заявленные накладные расходы составляют 2–10%.

Для работы нужен процессор Intel Skylake или новее; поддерживается только Linux. Большинство виртуальных машин не поддерживаются.

Ключевые возможности

  • 01Записывает каждый вызов функции в процессе с точностью около 40 нс.
  • 02Использует Intel Processor Trace для снятия снимка кольцевого буфера потока управления вместо семплирования.
  • 03Подключается к работающему процессу без изменений приложения.
  • 04Снимает буфер при вызове выбранной функции или при отключении от процесса.
  • 05Просмотрщик работает в браузере и не загружает трассы на сервер.

Сценарии использования

  • Выяснить, почему некоторые запросы в production медленные, хотя большинство выполняется быстро.
  • Увидеть, какой код действительно выполняется в горячем участке, а не только предполагать это.
  • Изучить последовательность вызовов, приведшую к сбою.
  • Разобраться, что происходит между двумя моментами в долго работающей программе, например за один цикл планировщика или проход GC.

Быстрый старт

  1. 1

    Скачайте бинарный файл или пакет последнего релиза со страницы релиза

  2. 2

    Сделайте предварительно собранный бинарный файл исполняемым

    chmod +x magic-trace
  3. 3

    Установите скачанный пакет .deb

    sudo dpkg -i magic-trace*.deb
  4. 4

    Проверьте установку, выведя текст справки

    magic-trace -help

Что важно знать

  • Поддерживается только Linux и требуется процессор Intel (Skylake или новее).
  • Большинство виртуальных машин не поддерживается.

В подборках

Темы

#performance-tools#profiling#tracing#intel-pt#linux#debugging#observability#intel#introspection#profile

Частые вопросы

Что такое magic-trace?
Linux-профайлер, который с помощью Intel Processor Trace записывает каждый вызов функции в процессе и показывает его на интерактивной временной шкале. magic-trace собирает и отображает высокодетализированные трассы работы процесса. В отличие от perf, который периодически снимает стеки вызовов, инструмент использует Intel Processor Trace, чтобы вести кольцевой буфер всего потока управления, а затем снимает его в выбранный момент. Снимок преобразуется в интерактивную временную шкалу стеков вызовов примерно за последние 10 мс по умолчанию; вызовы функций определяются с точностью около 40 нс.
magic-trace можно использовать бесплатно? Какая у него лицензия?
magic-trace распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
magic-trace всё ещё поддерживается?
Активно поддерживается. Последний коммит в magic-trace — 19 окт. 2026 г..
Для чего можно использовать magic-trace?
Выяснить, почему некоторые запросы в production медленные, хотя большинство выполняется быстро. Увидеть, какой код действительно выполняется в горячем участке, а не только предполагать это. Изучить последовательность вызовов, приведшую к сбою. Разобраться, что происходит между двумя моментами в долго работающей программе, например за один цикл планировщика или проход GC.
Как установить magic-trace?
Скачайте бинарный файл или пакет последнего релиза со страницы релиза Сделайте предварительно собранный бинарный файл исполняемым: chmod +x magic-trace Установите скачанный пакет .deb: sudo dpkg -i magic-trace*.deb Проверьте установку, выведя текст справки: magic-trace -help
Где скачать magic-trace?
Исходный код и инструкции по установке — на GitHub: https://github.com/janestreet/magic-trace

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Высокоуровневый язык и инструмент трассировки для Linux, использующий eBPF для отслеживания событий ядра и пользовательского пространства с минимальными накладными расходами.

10,4 тыс.+14 за неделю1,5 тыс.C++Apache-2.0Обновлён позавчера