<dd id="xos4y"><noscript id="xos4y"></noscript></dd>

    <ol id="xos4y"><code id="xos4y"><address id="xos4y"></address></code></ol>

    加入星計劃,您可以享受以下權益:

    • 創作內容快速變現
    • 行業影響力擴散
    • 作品版權保護
    • 300W+ 專業用戶
    • 1.5W+ 優質創作者
    • 5000+ 長期合作伙伴
    立即加入
    • 正文
    • 推薦器件
    • 相關推薦
    • 電子產業圖譜
    申請入駐 產業圖譜

    Linux ftrace 之 function、function_graph 使用筆記(一)

    2023/08/25
    4676
    閱讀需 8 分鐘
    加入交流群
    掃碼加入
    獲取工程師必備禮包
    參與熱點資訊討論

    ?哈嘍,大家好,我是小G。

    前言

    ftrace 功能很強大,不僅能跟蹤代碼流程,也能用來分析性能問題。對于 Linux 和 Android 平臺的學習和開發人員來說 ,能夠熟練使用 ftrace 的話,是非常強大的生產力,非常尤其要深入和快速學習linux內核相關流程,也非常有用。

    我也是在努力學習中,目前能進行一些簡單的性能問題分析,常用的主要還在使用 ftrace 熟悉和學習 linux 內核函數和相關流程,更好的理解工作中涉及到的內核層面知識。所以用的 最多的是ftrace 的 function、function_graph ?這兩個跟蹤器。

    在學習使用? function、function_graph 之前,需要先了解一些,ftrace 相關的一些數據和節點文件知識。

    正文

    最新的linux 內核,ftrace 所有相關數據和文件節點都位于?/sys/kernel/tracing 目錄下。

    ftrace部分數據和文件節點說明:

    文件..................... 用途.........................
    README README文件提供了一個簡短的使用說明,展示了ftrace的操作命令序列??梢酝ㄟ^cat命令查看該文件以了解概要的操作流程。
    current_tracer current_tracer用于設置或顯示當前使用的跟蹤器;使用echo將跟蹤器名字寫入該文件可以切換到不同的跟蹤器。系統啟動后,其缺省值為nop,即不做任何跟蹤操作。在執行完一段跟蹤任務后,可以通過向該文件寫入nop來重置跟蹤器。
    available_tracers available_tracers記錄了當前編譯進內核的跟蹤器的列表,可以通過cat查看其內容。寫current_tracer文件時用到的跟蹤器名字必須在該文件列出的跟蹤器名字列表中。
    trace trace文件提供了查看獲取到的跟蹤信息的接口??梢酝ㄟ^cat等命令查看該文件以查看跟蹤到的內核活動記錄,也可以將其內容保存為記錄文件以備后續查看。
    ...... ...
    set_graph_function set_graph_function設置要清晰顯示調用關系的函數,顯示的信息結構類似于C語言代碼,這樣在分析內核運作流程時會更加直觀一些。在使用function_graph跟蹤器時使用;缺省為對所有函數都生成調用關系序列,可以通過寫該文件來指定需要特別關注的函數。
    buffer_size_kb buffer_size_kb用于設置單個CPU所使用的跟蹤緩存的大小。跟蹤器會將跟蹤到的信息寫入緩存,每個CPU的跟蹤緩存是一樣大的。跟蹤緩存實現為環形緩沖區的形式,如果跟蹤到的信息太多,則舊的信息會被新的跟蹤信息覆蓋掉。

    說明:

    要更改該文件的值需要先將“current_tracer”設置為“nop”才可以。

    tracing_on tracing_on用于控制跟蹤的暫停。有時候在觀察到某些事件時想暫時關閉跟蹤,可以將0寫入該文件以停止跟蹤,這樣跟蹤緩沖區中比較新的部分是與所關注的事件相關的;寫入1可以繼續跟蹤。
    available_filter_functions available_filter_functions記錄了當前可以跟蹤的內核函數。對于不在該文件中列出的函數,無法跟蹤其活動。
    set_ftrace_filter、

    set_ftrace_notrace

    set_ftrace_filter和?set_ftrace_notrace在編譯內核時配置了動態ftrace(選中 CONFIG_DYNAMIC_FTRACE 選項)后使用。前者用于顯示指定要跟蹤的函數,后者則作用相反,用于指定不跟蹤的函數。如果一個函數名同時出現在這兩個文件中,則這個函數的執行狀況不會被跟蹤。這些文件還支持簡單形式的含有通配符的表達式,這樣可以用一個表達式一次指定多個目標函數。缺省為可以跟蹤所有內核函數,文件set_ftrace_notrace的值則為空。

    說明:

    要寫入這兩個文件的函數名必須可以在文件available_filter_functions中看到。

    ftrace部分跟蹤器說明:

    ftrace包含多個跟蹤器,用于跟蹤不同類型的信息,例如進程調度、中斷關閉等??梢酝ㄟ^ available_tracers 獲取內核當前支持的跟蹤器列表。常見的跟蹤器有:

    跟蹤器.............. 說明.......................
    nop nop跟蹤器不會跟蹤任何內核活動,將nop寫入current_tracer文件可以刪除之前所使用的跟蹤器,并清空之前收集到的跟蹤信息,即刷新trace文件。
    function function跟蹤器可以跟蹤內核函數的執行情況,可以通過文件set_ftrace_filter顯示指定要跟蹤的函數。
    function_graph function_graph跟蹤器可以顯示類似C源碼的函數調用關系圖,這樣查看起來比較直觀一些,可以通過文件 set_graph_function顯示指定要生成調用流程圖的函數。
    sched_switch sched_switch跟蹤器可以對內核中的進程調度活動進行跟蹤。
    irqsoff、

    preemptoff

    irqsoff跟蹤器和?preemptoff跟蹤器分別跟蹤關閉中斷的代碼和禁止進程搶占的代碼,并記錄關閉的最大時長,preemptirqsoff跟蹤器則可以看做它們的組合。

    ftrace還支持其它一些跟蹤器,了解更多可查看詳細內核文檔和源碼?!癉ocumentation/trace”目錄下的文檔以及“kernel/trace”下的源文件。

    下一篇,將會看下具體如何使用 function 和 function_graph 。

    推薦器件

    更多器件
    器件型號 數量 器件廠商 器件描述 數據手冊 ECAD模型 風險等級 參考價格 更多信息
    SN74HC245DW 1 Texas Instruments Octal Bus Transceivers With 3-State Outputs 20-SOIC -40 to 85

    ECAD模型

    下載ECAD模型
    $0.45 查看
    AFBR-2624Z 1 Foxconn Receiver, 630nm Min, 685nm Max, Through Hole Mount, ROHS COMPLIANT, PLASTIC, PACKAGE-8
    $18.85 查看
    74LVC244APW,118 1 NXP Semiconductors 74LVC(H)244A - Octal buffer/line driver; 3-state TSSOP2 20-Pin
    $0.36 查看

    相關推薦

    電子產業圖譜

    記錄和分享C/C++、Linux、ARM、Android、IoT相關知識。技術相伴于生活和成長,愿你我永為少年,心中有火,眼中有光,始保熱情。

    日韩欧美日产一区,日产国产亚洲欧洲综合,欧美亚洲日产精品第一页,亚洲日产专区app