第15章 perf を使用した uprobes の作成
アッププローブ (ユーザー空間プローブ) は、実行時にユーザー空間アプリケーションに動的な計装を提供する。ソースコードの変更や再コンパイルは一切不要です。
uprobes が役立つ主なユースケースは 2 つあります。
- デバッグとパフォーマンス分析
-
uprobesはウォッチポイントと同様に機能します。アプリケーション内の特定の場所に挿入して、そのコードパスが実行される頻度をカウントできます。さらに、コールスタックや変数値といった豊富なコンテキスト情報も取得できます。これらを使用して、パフォーマンスのボトルネックを特定したり、バグを追跡したりできます。 - イベントベースのデータ収集
-
アッププローブは、循環バッファーなどのメカニズムにおけるスイッチングイベントとして機能する。ユーザー空間における実行トリガーに基づいて、データの記録や消去のタイミングを制御できる。
uprobes は perf とシームレスに統合するため、既存の uprobes を使用することも、新しい uprobes を作成することもできます。この柔軟性により、カーネル空間の計装と並行して、ユーザー空間の動作を強力かつ非侵襲的にオブザーバビリティーおよびプロファイリングすることが可能になります (kprobes を使用)。
15.1. perf を使用して関数レベルで uprobes を作成する リンクのコピーリンクがクリップボードにコピーされました!
perf ツールを使用すると、プロセスまたはアプリケーション内の任意の点に動的なトレースポイントを作成できます。これらのトレースポイントを perf stat または perf record と組み合わせて使用することで、プロセスやアプリケーションの動作を分析できます。
前提条件
-
perfユーザー空間ツールがインストールされている。詳細は、perf のインストール を参照してください。
手順
プロセスまたはアプリケーション内の対象の場所で、監視対象のプロセスまたはアプリケーションに uprobe を作成します。
# perf probe -x /path/to/executable -a functionAdded new event: probe_executable:function (on function in /path/to/executable) You can now use it in all perf tools, such as: perf record -e probe_executable:function -aR sleep 1