Repolode
janestreet

janestreet/magic-trace

Intel Processor Traceでプロセス内のすべての関数呼び出しを記録し、インタラクティブなタイムラインに表示するLinuxプロファイラーです。

スター
6,347
フォーク
223
未解決の Issue
73
最終コミット
18 日前

これは何?

magic-traceは、プロセスの動作を高解像度でトレースして表示します。perfのように一定間隔でコールスタックをサンプリングするのではなく、Intel Processor Traceを使って制御フロー全体をリングバッファに記録し、指定した時点でバッファのスナップショットを取得します。スナップショットを再構成すると、デフォルトでおよそ過去10 ms分のコールスタックを含むインタラクティブなタイムラインになり、関数呼び出しを約40 nsの精度で特定できます。

実行中のプロセスにアタッチし、Ctrl+Cでデタッチして実行終了時点を記録できます。また、指定した関数が呼び出されるたびにスナップショットを取得するトリガーも設定できます。トレースはtrace.fxt.gzファイルとして保存され、Perfettoのフォークであるmagic-trace.orgのビューアーで開きます。ビューアーはブラウザー上で動作します。このツールを使うためにアプリケーションの変更は不要で、オーバーヘッドは2%~10%とされています。

Skylake以降のIntel CPUが必要で、Linuxでのみ動作します。ほとんどの仮想マシンはサポートされていません。

主な機能

  • 01プロセス内のすべての関数呼び出しを、約40 nsの精度で記録します。
  • 02サンプリングの代わりにIntel Processor Traceを使い、制御フローのリングバッファからスナップショットを取得します。
  • 03アプリケーションを変更せずに、実行中のプロセスにアタッチできます。
  • 04指定した関数の呼び出し時、またはデタッチ時にスナップショットを取得できます。
  • 05ビューアーはブラウザー上で動作し、トレースをアップロードしません。

ユースケース

  • 高速なリクエストが多い中で、一部の本番リクエストが遅くなる原因を調べる。
  • ホットパスで想定されていたコードと、実際に実行されるコードを確認する。
  • クラッシュに至るまでの呼び出し順序を確認する。
  • スケジューラーのサイクルやGCの実行など、長時間動作するプログラムの2つの時点の間に何が起きているかを調べる。

クイックスタート

  1. 1

    最新のリリースページからリリースバイナリまたはパッケージをダウンロードします

  2. 2

    ビルド済みバイナリに実行権限を付与します

    chmod +x magic-trace
  3. 3

    ダウンロードした .deb パッケージをインストールします

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

    ヘルプテキストを表示して、インストールを確認します

    magic-trace -help

使う前に知っておきたいこと

  • Linux のみ対応しており、Intel CPU(Skylake 以降)が必要です。
  • ほとんどの仮想マシン(VM)ではサポートされていません。

収録されている特集

トピック

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

よくある質問

magic-trace とは?
Intel Processor Traceでプロセス内のすべての関数呼び出しを記録し、インタラクティブなタイムラインに表示するLinuxプロファイラーです。 magic-traceは、プロセスの動作を高解像度でトレースして表示します。perfのように一定間隔でコールスタックをサンプリングするのではなく、Intel Processor Traceを使って制御フロー全体をリングバッファに記録し、指定した時点でバッファのスナップショットを取得します。スナップショットを再構成すると、デフォルトでおよそ過去10 ms分のコールスタックを含むインタラクティブなタイムラインになり、関数呼び出しを約40 nsの精度で特定できます。
magic-trace は無料で使えますか?ライセンスは?
magic-trace は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
magic-trace は今もメンテナンスされていますか?
活発にメンテナンス中。magic-trace の最終コミットは 2026年10月19日 です。
magic-trace は何に使えますか?
高速なリクエストが多い中で、一部の本番リクエストが遅くなる原因を調べる。 ホットパスで想定されていたコードと、実際に実行されるコードを確認する。 クラッシュに至るまでの呼び出し順序を確認する。 スケジューラーのサイクルやGCの実行など、長時間動作するプログラムの2つの時点の間に何が起きているかを調べる。
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 をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト