トレースコマンド trace-cmd を使ってみる(Ubuntu 上)

Linuxカーネルのftraceフレームワーク用フロントエンドであるtrace-cmdは、内部動作を可視化し、性能分析やデバッグに有用なツールである。trace-cmd recordでカーネルイベントを記録し、trace.datファイルを生成する。trace-cmd reportでテキスト表示、KernelSharkで視覚化・分析が可能である。

Ubuntu 24.04 LTS では、trace-cmd パッケージはバージョン 2.9.4 が提供され、最新の ftrace 機能に対応している。

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行する.

Ubuntu のインストールは別ページ »で説明する.

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# 変更をシステム全体に確実に反映させるために再起動
sudo shutdown -r now

trace-cmd のインストール(Ubuntu 上)

次のコマンドを実行する.

sudo apt -y install trace-cmd kernelshark

trace-cmd を使ってみる

トレースデータの記録には trace-cmd record コマンドを使用する。このコマンドは指定したコマンドの実行中やシステム全体のカーネルイベントを ftrace を通じて記録する。-p function_graph オプションは,関数呼び出しの関係をグラフ形式で記録するプラグインを指定している。これは特にカーネル内の関数呼び出しのトレースに有用である。他にも -p function はカーネル関数の実行時間やコールスタックの確認に、-e オプションを使えば特定のイベントに絞ったトレースが可能となる。トレース対象となるコマンドは <コマンド> の部分に指定する。

sudo trace-cmd record -p function_graph <コマンド>

記録されたトレースデータを含む trace.dat ファイルを解析し,人間が読める形式で標準出力に表示するには trace-cmd report コマンドを使用する。-i trace.dat は入力ファイルを指定するオプションである。

sudo trace-cmd report -i trace.dat

trace.dat ファイルの内容を視覚的に確認するには,KernelShark ツールを使用する。kernelshark trace.dat コマンドを実行すると,グラフィカルなインターフェースでトレース結果をタイムラインなどで確認できる。KernelShark 上ではグラフ上で特定の時間範囲を選択してズームインしたり、フィルタリング機能を使って特定のプロセスや CPU コアのイベントだけを表示したりして詳細な分析を行うことができる。

kernelshark trace.dat