トレースコマンド trace-cmd を使ってみる(Ubuntu 上)
trace-cmd は、Linux カーネルのトレース機構 ftrace を操作するコマンドである。カーネル内部の関数呼び出しやイベントを記録できるため、性能の測定やデバッグに使う。trace-cmd record でカーネルイベントを記録して trace.dat ファイルを作り、trace-cmd report でテキスト表示、KernelShark で画面上での確認と分析を行う。
Ubuntu 24.04 LTS では、trace-cmd パッケージのバージョンは 3.2 である。
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行する.
# パッケージリストの情報を更新
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 を通して記録し、カレントディレクトリに trace.dat ファイルを作る。-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 を使う。次のコマンドを実行すると、トレース結果がタイムラインとイベント一覧で表示される。タイムライン上で時間の範囲を選んで拡大したり、フィルタ機能で特定のプロセスや CPU コアのイベントだけを表示したりできる。
kernelshark trace.dat