2017-07-02 28 views
1

假設我有一個可根據命令行選項生成不同基準的線束二進制文件。我非常喜歡抽樣這些基準。可以「perf記錄」或「perf-record」樣本子進程嗎?

我有3種選擇:

  1. 變化線束二進制產卵其運行基準的「PERF記錄」子進程並執行採樣

  2. 只是做「PERF紀錄$ harness-二進制「,希望它也會對孩子進程進行抽樣。

  3. 「perf record -a $ harness-binary」它將執行「所有CPU的系統範圍收集」。這需要root權限,因此在我的情況下不可行。

如果perf-record確實對子進程進行採樣,則方法#2是乾淨的。有人可以幫助確認是否屬於這種情況?指向文檔或perf代碼將受到高度讚賞。

如果方法#2是可行的,並且基準測試比線束的CPU密集度更高,我認爲基準測試的質量應該是相當不錯的,對嗎?

由於

回答

1

perf record而不-a選擇權記錄的所有過程,分叉(和線程克隆)從目標進程記錄開始後。與perf record ./program它也將分析所有的子進程,並與perf record -p $PID附加到已經運行的$ PID它將剖析目標進程和所有子進程後附加。分析繼承在默認情況下處於啓用狀態(代碼按要求:attr->inherit = !opts->no_inherit; & no_inherit),可以使用-i選項禁用,也可以禁用-t--per-thread

這種傳承,就像是perf stathttps://perf.wiki.kernel.org/index.php/Tutorial

計數和繼承

默認情況下,香水,統計計數過程中的所有線程和隨後的子進程和線程。這可以使用-i選項進行更改。無法獲得每個線程或每個進程的計數細分。

而且-i選項是有perf record太:http://man7.org/linux/man-pages/man1/perf-record.1.html

-i, --no-inherit 
     Child tasks do not inherit counters. 

perf report可以過濾從收集合並perf.data文件從一些PID的事件。

相關問題