第15章 perf を使用した uprobes の作成
uprobes (ユーザー空間プローブ) は、ソースコードの変更や再コンパイルを必要とせずに、実行時にユーザー空間アプリケーション内の特定のポイントを監視する動的な計装メカニズムです。
uprobes が役立つ主なユースケースは 2 つあります。
- デバッグとパフォーマンス分析
-
uprobesはウォッチポイントと同様に機能します。アプリケーション内の特定の場所に挿入して、そのコードパスが実行される頻度をカウントできます。さらに、コールスタックや変数値などの豊富なコンテキストを取得できるため、パフォーマンスのボトルネックの特定やバグの追跡に役立ちます。 - イベントベースのデータ収集
-
uprobesは、循環バッファーなどのメカニズムに対する切り替えイベントとして機能し、ユーザー空間での実行トリガーに基づいてデータが記録またはフラッシュされるタイミングを制御するのに役立ちます。
uprobes は perf とシームレスに統合するため、既存の uprobes を使用することも、新しい uprobes を作成することもできます。このような柔軟性を (kprobes による) カーネル空間の計装と併せて利用することで、ユーザー空間の動作を、効果的かつ非侵入的な方法で観測およびプロファイリングすることが可能になります。
15.1. perf を使用して関数レベルで uprobes を作成する リンクのコピーリンクがクリップボードにコピーされました!
perf ツールを使用すると、プロセスまたはアプリケーション内の任意の点に動的なトレースポイントを作成できます。その後、このトレースポイントを perf stat や perf record などの他の perf ツールと併用すると、プロセスやアプリケーションの動作をよりよく理解できるようになります。
前提条件
-
perfユーザー空間ツールがインストールされている。詳細は、perf のインストール を参照してください。
手順
プロセスまたはアプリケーション内の対象の場所で、監視対象のプロセスまたはアプリケーションに uprobe を作成します。
# perf probe -x /path/to/executable -a function Added 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