ftrace

本ページの位置:「シリコンリナックス」→「技術情報 CAT wiki」→「ftrace」

カーネルトレーサ ftrace の使い方について

対象

  • CAT724
  • linux-3.0.4
  • debian squeeze

準備

解析ツール trace-cmd をビルドする

開発PCにて

# apt-get install git swig asciidoc locate groff
# updatedb
(locate情報を作っておかないと trace-cmdのmake時に
docbook-xmlが無いと言われdocumentのビルドに失敗する)

ソースコードダウンロード

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git trace-cmd-stable-v1

ビルド

$ cd trace-cmd-stable-v1
$ make
$ su                      rootユーザになり /usr/local へインストール
# make install
# exit                    rootユーザでの作業終了

さらに sh4用の trace-cmd をビルドする

$ make clean
$ make CROSS_COMPILE=sh4-linux-gnu-

NFSやFTPを使って SH4用の trace-cmd をCAT724の /usr/local/bin にコピーする

カーネル

カーネルをコンフィグレーションし ftrace を有効にする

開発PCにて

$ cd カーネルソース
$ make cat724_defconfig
$ make menuconfig
Kernel hacking  --->
  [*] Debug Filesystem
  [*] Tracers  --->
    [*]   Kernel Function Tracer
    [*]     Kernel Function Graph Tracer (NEW)

出来上がった arch/sh/boot/zImage を /dev/mtdblock1 に上書きしてカーネルを更新する

CAT724にて

# cp カーネルソースの/arch/sh/boot/zImage /tmp
# cp /tmp/zImage /dev/mtdblock1

CAT724の /etc/fstab に1行追加して debugfs を有効化する

debugfs         /sys/kernel/debug       debugfs none                    0 0

CAT724を再起動する

CAT724にて
# reboot

ftraceの使い方

ターゲット機の/proc/sys/kernel/ftrace_enabled が 1 であることを確認する

CAT724にて
# cat /proc/sys/kernel/ftrace_enabled
1
もし 0 だったら有効化するために
# echo 1 > /proc/sys/kernel/ftrace_enabled
とする

使用可能なトレーサ

# cd /sys/kernel/debug/tracing
# cat available_tracers
function_graph function nop

function_graphを使用してみる

# echo function_graph > current_tracer
# cat trace | head -100

ftrace_dump_on_oops を有効にしておくと oops (kernel panic)時にftraceを表示する

# echo 1 > /proc/sys/kernel/ftrace_dump_on_oops

trace-cmdの使い方

カレントディレクトリにログファイル trace.dat を作る。
CAT724は read-only ファイルシステムなので /tmp に移動して trace-cmd を使う

移動
# cd /tmp

lsコマンドのログをとる
# trace-cmd record -p function_graph ls -ltr /usr/ > /dev/null

レポートの表示
# trace-cmd report

リモートtrace-cmd

開発PCがサーバ、CAT724がクライアントとなる

開発PCにてポート5678で待ち受け(ログ記録)
$ trace-cmd listen  -p 5678 
CAT724にて
# trace-cmd record -N 開発PCのIPアドレス:5678 -e sched -p function_graph
しばらくして CTRL+C で停止
開発PCにて CTRL+C でログ記録を中止し
$ trace-cmd report ログファイル名

外部リンク

関連