All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jin, Yao" <yao.jin@linux.intel.com>
To: Like Xu <like.xu@linux.intel.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: jolsa@kernel.org, peterz@infradead.org, mingo@redhat.com,
	alexander.shishkin@linux.intel.com, Linux-kernel@vger.kernel.org,
	ak@linux.intel.com, kan.liang@intel.com, yao.jin@intel.com
Subject: Re: [PATCH] perf parse-events: Set exclude_guest for user-space counting
Date: Thu, 13 Aug 2020 11:11:44 +0800	[thread overview]
Message-ID: <ab4ae047-ba0b-fed6-36e4-d667e3437e34@linux.intel.com> (raw)
In-Reply-To: <74097816-3f36-abea-1eaa-8942aedd7322@linux.intel.com>

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
>>>
>>
> 

  reply	other threads:[~2020-08-13  3:11 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-12  6:59 [PATCH] perf parse-events: Set exclude_guest for user-space counting Jin Yao
2020-08-12 12:15 ` Arnaldo Carvalho de Melo
2020-08-12 12:55   ` Arnaldo Carvalho de Melo
2020-08-13  5:09     ` Jin, Yao
2020-08-12 13:02   ` Like Xu
2020-08-13  3:11     ` Jin, Yao [this message]
2020-08-13  6:57       ` Like Xu
2020-08-13  7:08         ` Jin, Yao
2020-08-13  7:21           ` Like Xu
2020-08-17  0:52 ` [perf parse] fc430b6065: perf-sanity-tests.Parse_event_definition_strings.fail kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ab4ae047-ba0b-fed6-36e4-d667e3437e34@linux.intel.com \
    --to=yao.jin@linux.intel.com \
    --cc=Linux-kernel@vger.kernel.org \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@intel.com \
    --cc=like.xu@linux.intel.com \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=yao.jin@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.