This page looks best with JavaScript enabled

ftrace

 ·  ☕ 2 min read

介紹

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

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

Share on

呂奕珣
WRITTEN BY
呂奕珣
SDN ML FINTECH HFT