9.2. トレースポイント
debugfs
が、/sys/kernel/debug
ディレクトリーの標準的な場所にマウントされていると仮定すると、トレースポイントは /sys/kernel/debug/tracing/
ディレクトリーの下にあります。events
サブディレクトリーには、指定可能なすべてのトレーシングイベントが格納されます。gfs2
モジュールが読み込まれると、各 GFS2 イベントごとにサブディレクトリーを含む gfs2
サブディレクトリーが現れます。/sys/kernel/debug/tracing/events/gfs2
ディレクトリーの内容は以下のようになります。
[root@chywoon gfs2]# ls
enable gfs2_bmap gfs2_glock_queue gfs2_log_flush
filter gfs2_demote_rq gfs2_glock_state_change gfs2_pin
gfs2_block_alloc gfs2_glock_put gfs2_log_blocks gfs2_promote
すべての GFS2 トレースポイントを有効にするには、次のコマンドを入力します。
[root@chywoon gfs2]# echo -n 1 >/sys/kernel/debug/tracing/events/gfs2/enable
特定のトレースポイントを有効にするために、各イベントサブディレクトリーに enable
ファイルがあります。これは、各イベントまたはイベントのセットにイベントフィルターを設定するために使用できる filter
ファイルにも当てはまります。各イベントの意味は、以下で詳しく説明します。
トレースポイントからの出力は、ASCII またはバイナリーの形式で提供されます。現在、この付録ではバイナリーインターフェイスに関する説明は含まれません。ASCII インターフェイスは 2 つの方法で利用できます。リングバッファーの現在の内容をリスト表示するには、以下のコマンドを実行します。
[root@chywoon gfs2]# cat /sys/kernel/debug/tracing/trace
このインターフェイスは、一定期間にわたって長時間実行しているプロセスを使用し、イベントの後にバッファー内の最新のキャプチャー情報を確認する必要がある場合に便利です。代替インターフェイスである /sys/kernel/debug/tracing/trace_pipe
は、すべての出力が必要な場合に使用できます。イベントは、発生時にこのファイルから読み取られます。このインターフェイスを介して利用可能な履歴情報はありません。出力の形式は両方のインターフェイスで同じであり、各 GFS2 イベントはこの付録の後のセクションで説明します。
トレースポイントのデータの読み取りには、trace-cmd
と呼ばれるユーティリティーを利用できます。このユーティリティーの詳細は、 http://lwn.net/Articles/341902/ を参照してください。trace-cmd
ユーティリティーは strace
ユーティリティーと同様に使用することができ、さまざまなソースからトレースデータを収集している間にコマンドを実行できます。