# trace-cmd trace-cmd は [[Steven Rostedt]] らが開発したオープンソースの [[Ftrace]] フロントエンドである。トレーシングシステムとバイナリ出力形式(`trace.dat`)の設定、その他の機能のためのサブコマンドとオプションを持つ。イベントソースとしてトレースポイントや構成済みの kprobe・uprobe に加え、Ftrace の関数トレーサーと関数グラフトレーサーを使える。(Source: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 14 Ftrace]] §14.11) ## 主なサブコマンド | サブコマンド | 説明 | |---|---| | `record` | トレーシングして `trace.dat` ファイルに記録する | | `report` | `trace.dat` ファイルからトレースを読み出す | | `stream` | トレースして結果を標準出力に表示する | | `list` | 対応しているトレーシングイベントのリストを表示する | | `stat` | カーネルのトレーシングサブシステムの状態を表示する | | `profile` | トレースして、カーネルの時間・レイテンシ情報を表示するカスタムレポートを生成する | | `listen` | ネットワークからのトレース要求を受け付ける | (Source: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 14 Ftrace]] §14.11.1、表14-5) ## perf(1) との比較 trace-cmd は関数/関数グラフトレーシングに完全対応し、ネットワークを介したクライアント/サーバー機能を持つ。一方 PMC(パフォーマンスモニタリングカウンタ)や時間ベースサンプリングには対応せず、kprobe/uprobe/USDT は tracefs の `events` に既に存在する場合のみ部分対応となる。[[perf]](1) はこれと逆の得意分野を持ち、両者は補完関係にある。(Source: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 14 Ftrace]] §14.11.3、表14-6) ## GUI: KernelShark trace-cmd のデフォルト出力ファイル `trace.dat` を可視化する GUI が [[KernelShark]] である。CPU ごとのタイムラインとイベント表を対話的にズーム・検索でき、スレッド間相互作用によるパフォーマンス障害の究明に役立つ。(Source: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 14 Ftrace]] §14.11.5) ## 関連 - 出典: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 14 Ftrace]] - エンティティ: [[Ftrace]] / [[Steven Rostedt]] / [[KernelShark]] / [[perf]]