Messages in this thread Patch in this message | | | Subject | Re: [PATCH] perf parse-events: Set exclude_guest for user-space counting | From | "Jin, Yao" <> | Date | Thu, 13 Aug 2020 11:11:44 +0800 |
| |
Hi Like,
On 8/12/2020 9:02 PM, Like Xu wrote: > On 2020/8/12 20:15, Arnaldo Carvalho de Melo wrote: >> Em Wed, Aug 12, 2020 at 02:59:53PM +0800, Jin Yao escreveu: >>> Currently if we run 'perf record -e cycles:u', exclude_guest is 0. >>> >>> But it doesn't make sense that we request for user-space counting >>> but we also get the guest report. >>> > > Please hold the horse and allow this possibility. > > Some authorized perf users on the host may > only want to count (KVM) guest user space events. > > Thanks, > Like Xu >
Without this patch, if we don't set the ":u" modifier, exclude_guest = 1.
perf record -e cycles ./div perf evlist -v cycles: size: 120, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, read_format: ID, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1
So this patch doesn't change perf's original behavior.
Thanks Jin Yao
>>> To keep perf semantics consistent and clear, this patch sets >>> exclude_guest for user-space counting. >> >> Applied, and also added this, that you should consider doing in the >> future (modulo the "Committer testing:" header :) ): >> >> Committer testing: >> >> Before: >> >> # perf record -e cycles:u >> ^C[ perf record: Woken up 1 times to write data ] >> [ perf record: Captured and wrote 1.231 MB perf.data (91 samples) ] >> # >> # perf evlist -v >> cycles:u: size: 120, { sample_period, sample_freq }: 4000, sample_type: >> IP|TID|TIME|ID|CPU|PERIOD, read_format: ID, disabled: 1, inherit: 1, exclude_kernel: 1, >> exclude_hv: 1, freq: 1, sample_id_all: 1 >> <SNIP> >> # >> >> After: >> >> # perf record -e cycles:u >> ^C[ perf record: Woken up 1 times to write data ] >> [ perf record: Captured and wrote 1.263 MB perf.data (403 samples) ] >> # >> # perf evlist -v >> cycles:u: size: 120, { sample_period, sample_freq }: 4000, sample_type: >> IP|TID|TIME|ID|CPU|PERIOD, read_format: ID, disabled: 1, inherit: 1, exclude_kernel: 1, >> exclude_hv: 1, freq: 1, sample_id_all: 1, exclude_guest: 1 >> # >> >> ---- >> >> I.e. show actual command output before and after that demonstrates the >> problem and then the solution. >> >>> Signed-off-by: Jin Yao <yao.jin@linux.intel.com> >>> --- >>> tools/perf/util/parse-events.c | 2 ++ >>> 1 file changed, 2 insertions(+) >>> >>> diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c >>> index 9f7260e69113..4d809f1fe269 100644 >>> --- a/tools/perf/util/parse-events.c >>> +++ b/tools/perf/util/parse-events.c >>> @@ -1794,6 +1794,8 @@ static int get_event_modifier(struct event_modifier *mod, char *str, >>> if (*str == 'u') { >>> if (!exclude) >>> exclude = eu = ek = eh = 1; >>> + if (!exclude_GH) >>> + eG = 1; >>> eu = 0; >>> } else if (*str == 'k') { >>> if (!exclude) >>> -- >>> 2.17.1 >>> >> >
| |