Набор инструментов с открытым исходным кодом для трассировки и профилирования: SDK, системные демоны и браузерный интерфейс для анализа трасс на Android, Linux и в Chromium.
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
Скачайте бинарный файл или пакет последнего релиза со страницы релиза
- 2
Сделайте предварительно собранный бинарный файл исполняемым
chmod +x magic-trace - 3
Установите скачанный пакет .deb
sudo dpkg -i magic-trace*.deb - 4
Проверьте установку, выведя текст справки
magic-trace -help
Что важно знать
- Поддерживается только Linux и требуется процессор Intel (Skylake или новее).
- Большинство виртуальных машин не поддерживается.
В подборках
Темы
Частые вопросы
- Что такое 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 обновляется ежедневно.
Похожие проекты
Набор инструментов для упаковки eBPF-программ в Gadgets в формате OCI-образов, чтобы собирать и анализировать данные в кластерах Kubernetes и на хостах Linux.
Низконакладной трассировщик Python, который записывает вызовы функций и показывает выполнение кода на интерактивной временной шкале.
Профилировщик стека вызовов Python, который показывает, на что уходит время в коде, и выводит результаты в консоль, HTML и других форматах.
Лёгкий демон телеметрии, который собирает метрики Linux, CPU, GPU и обучения PyTorch и запускает трассировки по запросу.
Высокоуровневый язык и инструмент трассировки для Linux, использующий eBPF для отслеживания событий ядра и пользовательского пространства с минимальными накладными расходами.