linux_kernel_trace_event

最近要從 linux kernel 撈一些資料出來看,用 printk() 很沒效率,結果也不一定符合預期。

找了一下 linux 內建的 trace events

用法滿直接的,把 debugfs mount 好之後就可以開始用了!

先切換到底下路徑: /sys/kernel/debug/tracing

裡面會有幾個資料夾和檔案,底下介紹我有用到的部分:

  • available_events : 紀錄了一些可使用的events,像是 ext4、jbd2 等等
  • set_event:將 available_events 中要 trace 的函式名稱複製到這個檔案就可以啟用了
    也可以透過echo “ext4:*” > set_event 來啟用某個特定的subsystem
  • trace:event trace 的輸出會寫到這個檔案,可以透過 cat 輸出這個檔案到其他資料夾
  • trace_pipe:如果要不中斷地輸出 event trace 的資料,可以 cat 這個檔案