首頁>Club>
4
回覆列表
  • 1 # 文蝶媚影

    Ftrace 由 RedHat 的 Steve Rostedt 負責維護。到 2.6.30 為止,已經支援的 tracer 包括:


    Function tracer 和 Function graph tracer: 跟蹤函式呼叫。


    Schedule switch tracer: 跟蹤程序排程情況。


    Wakeup tracer:跟蹤程序的排程延遲,即高優先順序程序從進入 ready 狀態到獲得 CPU 的延遲時間。該 tracer 只針對實時程序。


    Irqsoff tracer:當中斷被禁止時,系統無法相應外部事件,比如鍵盤和滑鼠,時鐘也無法產生 tick 中斷。這意味著系統響應延遲,irqsoff 這個 tracer 能夠跟蹤並記錄核心中哪些函式禁止了中斷,對於其中中斷禁止時間最長的,irqsoff 將在 log 檔案的第一行標示出來,從而使開發人員可以迅速定位造成響應延遲的罪魁禍首。


    Preemptoff tracer:和前一個 tracer 類似,preemptoff tracer 跟蹤並記錄禁止核心搶佔的函式,並清晰地顯示出禁止搶佔時間最長的核心函式。


    Preemptirqsoff tracer: 同上,跟蹤和記錄禁止中斷或者禁止搶佔的核心函式,以及禁止時間最長的函式。


    Branch tracer: 跟蹤核心程式中的 likely/unlikely 分支預測命中率情況。 Branch tracer 能夠記錄這些分支語句有多少次預測成功。從而為最佳化程式提供線索。


    Hardware branch tracer:利用處理器的分支跟蹤能力,實現硬體級別的指令跳轉記錄。在 x86 上,主要利用了 BTS 這個特性。


    Initcall tracer:記錄系統在 boot 階段所呼叫的 init call 。


    Mmiotrace tracer:記錄 memory map IO 的相關資訊。


    Power tracer:記錄系統電源管理相關的資訊。


    Sysprof tracer:預設情況下,sysprof tracer 每隔 1 msec 對核心進行一次取樣,記錄函式呼叫和堆疊資訊。


    Kernel memory tracer: 記憶體 tracer 主要用來跟蹤 slab allocator 的分配情況。包括 kfree,kmem_cache_alloc 等 API 的呼叫情況,使用者程式可以根據 tracer 收集到的資訊分析內部碎片情況,找出記憶體分配最頻繁的程式碼片斷,等等。


    Workqueue statistical tracer:這是一個 statistic tracer,統計系統中所有的 workqueue 的工作情況,比如有多少個 work 被插入 workqueue,多少個已經被執行等。開發人員可以以此來決定具體的 workqueue 實現,比如是使用 single threaded workqueue 還是 per cpu workqueue.


    Event tracer: 跟蹤系統事件,比如 timer,系統呼叫,中斷等。


    這裡還沒有列出所有的 tracer,ftrace 是目前非常活躍的開發領域,新的 tracer 將不斷被加入核心。

  • 中秋節和大豐收的關聯?
  • 牽牛花的人生意義是什麼?