介紹
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
|