B.2. トレースポイント

トレースポイントは /sys/kernel/debug/tracing/ ディレクトリーにあります (debugfs が標準の場所である /sys/kernel/debug ディレクトリーにマウントされていることを前提)。events サブディレクトリーには、指定可能なすべてのトレーシングイベントが格納されます。また、gfs2 モジュールがロードされている場合は、gfs2 サブディレクトリーに、下位サブディレクトリーが GFS2 イベントごとに 1 つずつ格納されます。多くの場合、/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
このインターフェースは、ある一定の期間に長時間実行されるプロセスを使用する場合や、何らかのイベントの後にバッファー内にキャプチャーされている最新の情報を確認したい場合に役立ちます。もう 1 つのインターフェースは /sys/kernel/debug/tracing/trace_pipe であり、すべての出力が必要な場合に使用することができます。イベントは、発生するときにこのファイルから読み取られます。このインターフェースでは履歴情報は提供されません。出力の形式は両インターフェースとも同じであり、 本付録の後半で GFS2 イベント別に説明しています。
トレースポイントのデータの読み取りには、trace-cmd と呼ばれるユーティリティを利用することができます。このユーティリティについての更なる詳しい情報は、「リファレンス」 に記載のリンクを参照してください。trace-cmd ユーティリティは strace ユーティリティと同様に使用することができ、様々なソースからトレースデータを収集している間にコマンドを実行することが可能です。