ジャンル:運用管理
ライセンス:GNU GPLv2/LGPLv2.1
作者:Steven Rostedt
URL:git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git

 trace-cmdは、システムに何らかのトラブルが発生した際にカーネルがどのように動作していたのかをコマンド一発で情報収集して表示するソフトである。GUIフロントエンドも用意されている。

 深刻なシステムトラブルが発生した際に最も重要な対策の一つは、そのときLinuxシステムの内部で一体何が起こっていたのかを把握することだ。Linuxカーネルの動きをソースコードレベルで確認できれば、トラブルの原因を特定しやすくなる。

 ただし、カーネルコードを読みながら自力で問題の箇所を探し出すのは大変難しく、手間もかかる。こうしたケースで役立つのが、今回紹介する「trace-cmd」というソフトである。

 trace-cmdは、Linuxカーネルに内蔵されているトレーサ(カーネル内の各動処理を追跡するツール)である「ftrace」の操作を支援し、カーネルの動作の流れを視覚的に把握しやすくするためのソフトだ(写真1)。

写真1 カーネルのトレースを支援する「trace-cmd」
Linuxカーネル内蔵のトレーサである「ftrace」を簡単に操作するためのコマンドツールだ
[画像のクリックで拡大表示]

 ftraceには、アプリケーションやカーネルの実行経路(ライブラリや関数を呼ぶ経路)の途上で、各種処理を追跡し記録する機能がある。ftraceを使って記録した情報を参照して分析していけば、アプリケーションやカーネルの実際の実行経路の、どの個所で問題が生じているのかを把握できる。割り込み処理の遅延時間を調べたり、カーネルの動作が重い原因を探ったりする際に活躍する。

 だがftraceは「debugfs」というファイルシステムを通して利用することもあり、非常に煩雑な操作が必要になる。

 そこで役立つのがtrace-cmdである。trace-cmdはftraceのフロントエンドとして動作し、trace-cmdのサブコマンドを使ってftraceを操作する。これによりカーネルの動作を記録したり、記録を視覚的に表示したりすることが可能になる*1

*1 ほかにも応答遅延、ブート時間、スタック、メモリー、関数コールなどいろいろなトレース機能がプラグインとして用意されている。