Linux

是否有顯示跟踪點“實時”的命令,其中包括 PID?

  • November 21, 2018

我曾嘗試查看 、 和 的文件perf scriptperf trace包括trace-cmd“SEE ALSO”中的命令列表。

我可以sched:sched_process_exec使用perf trace -a --no-syscalls -e sched:sched_process_exec. 但是,它只顯示程序名稱(例如ls)。它不顯示 PID,除非跟踪點具有特定參數。 perf script始終顯示 PID,但不顯示實時輸出;它顯示perf.data文件的內容。

我不需要這是單個命令,例如btracefor blktrace。我很高興使用管道,類似於blktrace -d /dev/sda -o - | blkparse -i -.

(上述兩個命令都顯示 PID :-)。令人沮喪的是blktrace,也使用跟踪事件的命令系列可以以與列印記錄的跟踪相同的格式列印實時輸出。我在通用跟踪工具中找不到這樣的功能!)

perf record -a --no-syscalls -e sched:sched_process_exec sh -c read | perf script

sh -c read提供了一種停止此跟踪的方法,只需按 Enter。如果我省略此命令並嘗試使用 ctrl+C 中斷管道,我的輸出將失去,可能是因為它也中斷了perf script)。

但是,由於緩衝,此輸出不是“實時”的。例如,執行上面的命令什麼都沒有顯示,但是按輸入會導致它停止並顯示 exec() 的一行shblktrace具有處理輸出到管道的特殊情況程式碼,包括禁用預設的 C stdio 緩衝。嘗試perf recordunbuffer命令下執行給出錯誤“不兼容的文件格式”;我認為錯誤來自perf script.


man perf-report

選項

-i, --input=輸入文件名。(預設: perf.data除非 stdin 是 fifo

引用自:https://unix.stackexchange.com/questions/483189