ftraceを試してみました
確認してみたら、Linuxカーネルのトレーサ「ftace」が使える状態になっていたので、ftraceを支援するコマンド「trace-cmd」もインストールして試してみました。
◆ 2015/09/06 追記
ftraceの使い方について、以下の記事でまとめ直しました。
確認
まず、既にdebugfsがマウント済みであるか否かを確認します。
$ ls /sys/kernel/debug/
ここで、「そのような名前のファイルやディレクトリは無い」といった内容のエラーメッセージが表示された場合は、debugfsがマウントされていませんので、
$ sudo mount -t debugfs none /sys/kernel/debug
のようにマウントします。
そして、以下の場所にあるファイルを確認してください。
- /sys/kernel/debug/tracing/available_tracers
こちらのファイルに、「function」、「function_graph」の2つが記述されていれば、ftraceが使用可能な状態です。
そうでない場合は、Linuxカーネルでのftraceの設定とLinuxカーネルの再構築を行う必要があります。
本記事で参考にしている
や、UbuntuなどのDebian系のディストリビューションにおいてmake-kpkgでDEBパッケージを作成する方法については、
- 以前の記事(id:cupnes:20110226:1298713968)
も参考に作業を行ってください。
また、ftraceが有効であるかどうかを確認します。
$ cat /proc/sys/kernel/ftrace_enabled
1
この様に、「/proc/sys/kernel/ftrace_enabled」に「1」が設定されていれば、ftraceは有効化されています。
そうでない場合は、
$ sudo sysctl kernel.ftrace_enabled=1
や、
$ sudo echo 1 > /proc/sys/kernel/ftrace_enabled
などで有効化の設定を行ってください。
trace-cmdのインストール
トレースログの作成、閲覧といった作業は、「trace-cmd」というコマンドを用いて行うのが便利な様です。
trace-cmdはソースコードで公開されています。以下の様にビルド・インストールを行います。
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git $ cd trace-cmd/ $ make $ sudo make install
trace-cmdを試す
の受け売りですが、
「lsコマンド」についてトレースログを取得する場合には、以下の様にコマンドを実行します。
$ sudo trace-cmd record -p function_graph ls
すると、カレントディレクトリに「trace.dat」というバイナリ形式のファイルが作成されます。
これを閲覧するために、以下の様なコマンドを実行します。
$ trace-cmd report | lv # ページャは「lv」でなくとも「less」でも何でも構いません