| ftrace | |
|---|---|
| 開発者 | スティーブン・ロステッド他 |
| リリース | 2008年10月 9日 ( 2008-10-09 ) |
| オペレーティング·システム | Linux |
| タイプ | カーネル拡張機能 |
| ライセンス | GNU GPLバージョン 2 [ 1 ] |
| Webサイト | www.kernel.org/doc/html/latest/trace/index.html |
ftrace(Function Tracer)はLinuxカーネルのトレースフレームワークです。元々の名称であるFunction Tracerは、カーネルの実行中に実行されるさまざまな関数呼び出しに関連する情報を記録できるftraceの機能に由来していますが、ftraceのトレース機能はカーネルの内部操作のより広い範囲をカバーしています。[ 2 ] [ 3 ]
ftraceは、さまざまなトレーサープラグインを使用することで、スケジューリングイベント、割り込み、メモリマップドI/O、CPU電源状態遷移、ファイルシステムや仮想化に関連する操作など、さまざまな静的トレースポイントを対象にすることができます。また、カーネル関数呼び出しの動的追跡も可能で、オプションでグロブを使用して関数のサブセットに制限でき、呼び出しグラフを生成したり、スタック使用状況レポートを提供したりすることもできます。同時に、ftraceは、割り込みやプリエンプションが無効になっている時間など、Linuxカーネル内のさまざまなレイテンシを測定するためにも使用できます。[ 2 ] [ 4 ] [ 5 ]: 3-11、14、18
ftrace が有効な Linux カーネルは、CONFIG_FUNCTION_TRACERカーネル構成オプションを有効にして構築されます。ftrace との実行時におけるやり取りはすべて、特別にマウントされたdebugfsファイルシステムに含まれる読み書き可能な仮想ファイルを介して行われます。そのため、ftrace の動作には特別なユーザー空間ユーティリティは必要ありません。[ 2 ] [ 3 ] [ 6 ] ただし、データ記録、分析、視覚化のためのより高度な機能を提供する追加のユーザー空間ユーティリティがあります。そのようなユーティリティの例としては、 trace-cmdやKernelSharkなどがあります。[ 2 ] [ 5 ] : 31–47 [ 7 ] [ 8 ]
ftrace は内部的に、 gccのプロファイリング機構を利用して、すべてのソースレベルのカーネル関数のコンパイル済みバージョンにマシン命令を付加し、関数の実行を実際のトレースを実行する ftrace のトランポリンとトレーサー プラグインにリダイレクトします。gcc によって作成されたこれらの「エントリ ポイント」命令は、カーネルの起動時に ftrace によって変更され、実行時に構成されたトレースの種類とオプションに応じて、実行時に ftrace によってNOPとトレース トランポリンへの実際のジャンプの間で変更されます。 [ 9 ] [ 10 ]
ftraceは主にSteven Rostedtによって開発され、2008年10月9日にリリースされたカーネルバージョン2.6.27でLinuxカーネルのメインラインに統合されました。 [ 11 ]