kmemprof

プロファルまたはトレースの実行を制御するユーザーコマンド

--save-ksyms
/proc/ksyms をファイルに書き出します。
--set-frequency
サンプリングレートの設定
--set-filter
PID, PGID, CPU_ID などのフィルタ
--set-objfilter
オブジェクト名によるフィルタ
--load-cgprof
プロファイル用のカーネルモジュールをロードする
--unload-cgprof
プロファイル用のカーネルモジュールをアンロードする。
--load-trace
トレース用のカーネルモジュールをロードする
--unload-trace
トレース用のカーネルモジュールをアンロードする
--start
プロファイルまたはトレースの開始
--stop
プロファイルまたはトレースの停止
--shutdown
kmemprof に関連する全てのモジュールをアンロードする
--help
ヘルプメッセージの表示
--status
ロードされている kmemprof に関連したモジュールを表示する

trace-analyzer

トレースにより収集された情報を分析して表示するユーザーコマンド

--ksyms
ksyms ファイルの指定 (default: /proc/ksyms)
--system-map
System.map ファイルの指定 (default: /boot/System.map)

cgprof-analyzer

--ksyms
ksyms ファイルの指定 (default: /proc/ksyms)
--system-map
System.map ファイルの指定 (default: /boot/System.map)
--dotty
dot 形式で、アロケーションコールグラフを出力する
--nom-map
呼び出しアドレスを関数にマッピングしない

cgprof-config

# insmod kmemprof-cgprof.o `ruby cgprof-config --system.map ..`

アロケーションコールグラフプロファイル用のカーネルモジュールのロード補助ツー ル。特に指定したいオプションが以下になければ、ロードは単に `kmemprof --load-cgprof' とすればよい。

--ksyms
ksyms ファイルの指定 (default: /proc/ksyms)
--system-map
System.map ファイルの指定 (default: /boot/System.map)
--profile-shift
呼び出しアドレスの分析能 (default: 2)

Note

System.map ファイルは

に用いられます。 つまり、`kmemprof --load-cgprof' する場合は、実行中のカーネルに対応する System.map ファイルを指定する必要があり、(/boot/System.map なら指定しなくて も良い) また、trace-analyzer と cgprof-analyzer を実行する場合も、それと同じ内容の System.map を指定する必要があります。 新しいカーネルで起動したあと、古いデータを trace-analyzer, cgprof-analyzer で分析する際には注意が必要です。

ksyms ファイルは

に用いられます。 `kmemprof --load-cgprof' と実行しプロファイル用モジュールをロードしたあとに、 ロードされた他のカーネルモジュール内の関数を起点とする呼び出し関係はコールグ ラフに記録されません。 また、trace-analyzer と cgprof-analyzer の実行時にも、ksyms ファイルを参照して、 呼び出しアドレスをカーネルモジュールの関数シンボル名へ対応させるます。 しかし、 ksyms ファイルはロードされているモジュールのパスを特定するために用いるので、実際のモジュールがビルドしなおされてしまっていると間違った対応づけを行ってしまいます。 つまり、

ダイナミックローディングされるカーネルモジュールがあり、それらに関連するプロ ファイルまたはトレース情報に関心がある場合、プロファイルやトレース実行後、す みやかに、trace-analyzer や cgprof-analyzer による分析出力結果をセーブしてお くことをお薦めします。


SourceForge.jp