2017-04-18 59 views
0

我試圖使用perf來對我的應用程序進行基準測試。該應用程序是基於C++,我想評估無法在perf命令中使用--exclude-perf選項

L1-dcache-loads,L1-dcache-load-misses,L1-dcache-stores,cycles,instructions,cache-references,cache-misses,bus-cycles,branch-misses 

我想避免在我的輸出中看到perf事件,使它更容易閱讀。試圖運行下面的命令捕獲輸出:

perf record -g -e "L1-dcache-loads,L1-dcache-load-misses,L1-dcache-stores,cycles,instructions,cache-references,cache-misses,bus-cycles,branch-misses" --exclude-perf Binary-name 

但上文提及的命令與下面的錯誤而失敗:

--exclude-perf option should follow a -e tracepoint option 

Usage: perf record [options] [command] 

or: perf record [options] -- command [options] 

--exclude-perf don't record events from perf itself 

如果我不使用--exclude-perf選項,然後我的命令運行得很好,沒有任何錯誤。

讓我知道我在做什麼錯誤,同時增加選擇--exclude-PERF

+0

爲什麼不只是使用交互式的'perf report'並專注於您的應用程序PID?此外,不應該像單進程分析那樣與perf有關的採樣,而不是perf完成自我分析時的整個系統分析。 – osgx

回答

0

--exclude-perf不是採樣/剖析事件,如你使用(硬件CPU櫃)。難道只爲跟蹤點的事件: http://lxr.free-electrons.com/source/tools/perf/Documentation/perf-record.txt

151 --exclude-perf:: 
152   Don't record events issued by perf itself. This option should follow 
153   a event selector (-e) which selects tracepoint event(s). It adds a 
154   filter expression 'common_pid != $PERFPID' to filters. If other 
155   '--filter' exists, the new filter expression will be combined with 
156   them by '&&'. 

它使用的過濾器和過濾器是附加到跟蹤點的事件。