Linuxの関数トレース(ftrace)は面白い!

Linuxカーネルのftrace機能は、カーネル内での処理の流れを知りたいときにとても便利!
カーネル内で実行されたほぼすべての関数を時系列順に知ることができる。
さらに追加情報として、PIDやプロセス名、遅延時間(処理時間)なども取得されていて、おぉ!ここでコンテキストスイッチしてる、とか、この処理がこんなに重い、とかひと目で分かる。
(Linuxに限らず)OSの内部動作を知る、という意味でも使える。
trace-cmdを使うと便利。
trace-cmdのGUIフロントエンドKernelSharkを使うとさらに見やすい!!

関数トレース機能だけでなく、プリエンプト禁止時間の最大時間を取得できたり、タスクの起床遅延時間を計測できたりと色々使えそう。

Example:
>cat /sys/kernel/debug/tracing/available_tracers
(現在利用可能なトレース機能)
>trace-cmd record -p function_graph ls
>trace-cmd report trace.dat
>kernelshark

[trace-cmd]
特選フリーソフト - トレーサの操作を支援するコマンドツール trace-cmd:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20110920/368990/

3.9. trace-cmd を使用したレイテンシ追跡 - Red Hat Customer Portal
https://access.redhat.com/knowledge/docs/ja-JP/Red_Hat_Enterprise_MRG/2/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-Realtime_Specific_Tuning-Latency_Tracing_Using_trace_cmd.html

付録B 関数トレース - Red Hat Customer Portal
https://access.redhat.com/knowledge/docs/ja-JP/Red_Hat_Enterprise_MRG/2/html/Realtime_Tuning_Guide/appe-Realtime_Tuning_Guide-Function_Tracer.html

[kernelshark]
KernelShark
http://people.redhat.com/srostedt/kernelshark/HTML/#list

[計測]
Using KernelShark to analyze the real-time scheduler [LWN.net]
http://lwn.net/Articles/425583/