介紹
ftrace是Steven Rostedt開發trace-cmd
也是他開發的,接下來用trace-cmd
示範
細節文件請看ftrace.txt
查詢KERNEL CONFIG
法一
用cat
讀出/proc/config.gz
並且Pipeline(|
)傳遞給gunzip
解壓縮輸出(>
)名為kernel.config
的檔案
1
| cat /proc/config.gz | gunzip > kernel.config
|
CONFIG_XXX替換你要查詢的字
1
| cat kernel.config | grep "CONFIG_XXX"
|
法二
zcat /proc/config.gz | grep "CONFIG_XXX"
trace-cmd
ftrace並不是每個函數都有追蹤,可以查詢哪些核心函數支援追蹤
1
2
3
4
5
6
7
8
9
| #察看支援追蹤哪些函數
sudo trace-cmd list -f
#察看支援追蹤哪些機制
sudo trace-cmd list -e
#察看支援追蹤哪些機制
sudo trace-cmd list -o
#察看有哪些支援的tracer可以plugin
sudo trace-cmd list -t
#hwlat blk mmiotrace function_graph wakeup_dl wakeup_rt wakeup function nop
|
record
不同tracer
會追蹤與顯示的方式不同,我喜歡function
有興趣可以試試其他tracer
,執行完會生成trace.dat
檔案
1
2
| #這裡plugin(-p)的tracer叫function
sudo trace-cmd record -p function ./你的程式
|
report
report
會讀你目錄底下的trace.dat
1
| sudo trace-cmd report | grep "你有興趣核心函數名稱"
|
這裡的TIMESTAMP是microseconds
1
2
3
4
5
6
7
8
9
10
| # tracer: function
#
# entries-in-buffer/entries-written: 144405/9452052 #P:4
#
# TASK-PID CPU# TIMESTAMP FUNCTION
# | | | | |
<idle>-0 [002] 23636.756054: ttwu_do_activate.constprop.89 <-try_to_wake_up
<idle>-0 [002] 23636.756054: activate_task <-ttwu_do_activate.constprop.89
<idle>-0 [002] 23636.756055: enqueue_task <-activate_task
|