6.5. ftrace
ftrace
フレームワークはユーザーにいくつかのトレース機能を提供します。これは SystemTap のインターフェースよりも非常にシンプルなインターフェースでアクセス可能です。このフレームワークは、debugfs
ファイルシステムにある仮想ファイルのセットを使用します。これらのファイルは、特定のトレーサーを有効にします。ftrace
機能トレーサーは、カーネルで呼び出された各機能をリアルタイムで出力します。ftrace
フレームワーク内の他のトレーサーは、ウェイクアップ待ち時間やタスクスイッチ、カーネルイベントなどの分析にも使用できます。
また、
ftrace
に新たなトレーサーを追加し、カーネルイベントの分析用に柔軟性のあるソリューションとすることもできます。ftrace
フレームワークは、ユーザースペースの外で発生する待ち時間やパフォーマンスの問題のデバッグや分析に便利です。本ガイド内で説明している他のプロファイラーと違い、ftrace
カーネルのビルドイン機能です。
6.5.1. ftrace の使用方法
Red Hat Enterprise Linux 6 のカーネルには、
CONFIG_FTRACE=y
オプションが設定されています。このオプションは、ftrace
が必要とするインターフェースを提供します。ftrace
を使用するには、以下の方法で debugfs
ファイルシステムをマウントします。
mount -t debugfs nodev /sys/kernel/debug
ftrace
ユーティリティーはすべて、/sys/kernel/debug/tracing/
にあります。/sys/kernel/debug/tracing/available_tracers
ファイルで自分のカーネルでどのトレーサーが利用可能か確認してください。
cat /sys/kernel/debug/tracing/available_tracers
power wakeup irqsoff function sysprof sched_switch initcall nop
特定のトレーサーを使用するには、そのトレーサーを
/sys/kernel/debug/tracing/current_tracer
に書き込みます。たとえば、wakeup
は、優先順位の最も高いタスクをタスクのウェイクアップ後にスケジュールするのにかかる最大時間を追跡・記録します。これを使用するには、以下のコマンドを実行します。
echo wakeup > /sys/kernel/debug/tracing/current_tracer
トレースを開始または停止するには、
/sys/kernel/debug/tracing/tracing_on
に以下のように書き込みます。
echo 1 > /sys/kernel/debug/tracing/tracing_on
(追跡を有効化)
echo 0 > /sys/kernel/debug/tracing/tracing_on
(追跡を無効化)
追跡結果は以下のファイルで確認できます。
- /sys/kernel/debug/tracing/trace
- このファイルには、ヒューマンリーダブルな追跡出力が含まれています。
- /sys/kernel/debug/tracing/trace_pipe
- このファイルには
/sys/kernel/debug/tracing/trace
と同じ出力が含まれていますが、これはコマンドにパイプ処理されることになっています。/sys/kernel/debug/tracing/trace
とは異なり、このファイルからの読み取りは出力を消費します。