宏定義
在使用 ftrace 之前,需要確保內核配置編譯了其配置選項。
CONFIG_FTRACE=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_FUNCTION_TRACER=Y
CONFIG_IRQSOFF_TRACER=y
CONFIG_SCHED_TRACER=y
CONFIG_ENABLE_DEFAULT_TRACERS=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_PREEMPT_TRACER=y
而后在 /sys/kernel/debug/trace 目錄下提供了各種跟蹤器(tracer)和 event 事件,一些常用的選項如下。
available_tracers:列出當前系統支持的跟蹤器。
available_events:列出當前系統支持的 event 事件。
current_tracer:設置和顯示當前正在使用的跟蹤器。使用 echo 命令可以把跟蹤器的名字寫入該文件,即可以切換不同的跟蹤器。默認為
nop,即不做任何跟蹤操作。
trace:讀取跟蹤信息。通過 cat 命令查看 ftrace 記錄下來的跟蹤信息。
tracing_on:用于開始或暫停跟蹤。
trace_options:設置 ftrace 的一些相關選項。
ftrace 當前包含多個跟蹤器,很方便用戶用來跟蹤不同類型的信息,例如進程睡眠喚醒、搶占延遲的信息。查看 available_tracers
可以知道當前系統支持哪些跟蹤器,如果系統支持的跟蹤器上沒有用戶想要的,那就必須在配置內核時自行打開,然后重新編譯內核。常用的 ftrace 跟蹤器如下。
nop:不跟蹤任何信息。將 nop 寫入 current_tracer 文件可以清空之前收集到的跟蹤信息。
function:跟蹤內核函數執行情況。
function_graph:可以顯示類似 C 語言的函數調用關系圖,比較直觀。
wakeup:跟蹤進程喚醒信息。
irqsoff:跟蹤關閉中斷信息,并記錄關閉的最大時長。
preemptoff:跟蹤關閉禁止搶占信息,并記錄關閉的最大時長。
preemptirqsoff:綜合了 irqoff 和 preemptoff 兩個功能。
sched_switch:對內核中的進程調度活動進行跟蹤。
-
Linux
+關注
關注
87文章
11345瀏覽量
210405 -
宏定義
+關注
關注
0文章
51瀏覽量
9051
發布評論請先 登錄
相關推薦
不帶參數的宏定義是什么?不帶參數的宏定義的資料介紹詳細過程概述
Linux內核ftrace的學習
![<b class='flag-5'>Linux</b>內核<b class='flag-5'>ftrace</b>的學習](https://file.elecfans.com/web2/M00/0F/CB/poYBAGEWP2yAQqCNAAAuGURU7lM119.png)
評論