C.2. トレースポイント
トレースポイントは
/sys/kernel/debug/tracing/
ディレクトリーにあります。これは、debugfs
が標準の場所である /sys/kernel/debug
ディレクトリーにマウントされていることを前提としています。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
と呼ばれるユーティリティを利用することができます。このユーティリティについての更なる詳しい情報は、「参考文献」 に記載のリンクを参照してください。trace-cmd
ユーティリティは strace
ユーティリティと同様に使用することができ、様々なソースからトレースデータを収集している間にコマンドを実行することが可能です。