linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: linux-kernel@vger.kernel.org, hemant@linux.vnet.ibm.com,
	naveen.n.rao@linux.vnet.ibm.com
Subject: Re: [RFC 1/4] perf kvm: Enable 'record' on powerpc
Date: Mon, 28 Mar 2016 16:28:45 +0530	[thread overview]
Message-ID: <56F90E65.4030809@linux.vnet.ibm.com> (raw)
In-Reply-To: <20160324211528.GD32162@kernel.org>

Thanks Arnaldo for putting the effort.

I've tested this patch on powerpc and it looks fine to me. Please find 
my below comments.

On Friday 25 March 2016 02:45 AM, Arnaldo Carvalho de Melo wrote:
> Em Tue, Mar 22, 2016 at 11:19:21PM -0300, Arnaldo Carvalho de Melo escreveu:
>> Em Tue, Mar 22, 2016 at 04:12:11PM -0300, Arnaldo Carvalho de Melo escreveu:
>>> Em Wed, Feb 24, 2016 at 02:37:42PM +0530, Ravi Bangoria escreveu:
>>>> 'perf kvm record' is not available on powerpc because 'perf' relies on
>>>> the 'cycles' event (a PMU event) to profile the guest. However, for
>>>> powerpc, this can't be used from the host because the PMUs are controlled
>>>> by the guest rather than the host.
>>>>
>>>> There exists a tracepoint 'kvm_hv:kvm_guest_exit' in powerpc which is
>>>> hit whenever any of the threads exit the guest context. The guest
>>>> instruction pointer dumped along with this tracepoint data in the field
>>>> 'pc', can be used as guest instruction pointer.
>>>>
>>>> This patch changes default event as kvm_hv:kvm_guest_exit for recording
>>>> guest data in host on powerpc. As we are using host event to record guest
>>>> data, this approach will enable only --guest option of 'perf kvm'. Still
>>>> --host --guest together won't work.
>>> It should, i.e. --host --guest should translate to:
>>>
>>>     -e cycles:H,kvm_hv:kvm_guest_exit
>>>
>>> I.e. both collect cycles only in the host, and also the tracepoint that
>>> will allow us to get the guest approximation for the unavailable cycles
>>> event, no?
>>>
>>> I'm putting the infrastructure work needed for this the perf/cpumode
>>> branch. More work will be put there soon.
>> So I took a different path and made perf_evsel__parse_sample set a new
>> perf_sample.cpumode field, this way we'll end up having just to set a
>> per-evsel ->post_parse_sample() callback for the event that replaces
>> "cycles" for PPC guests where we'll just set data->ip and data->cpumode,
>> the rest of the code remains unchanged.
>>
>> The changes I made looks useful in itself, as, IIRC more code was
>> removed than added.
>>
>> I'll continue tomorrow and will test with the kvm:kvm_exit on x86_64 for
>> testing, that has:
> Ok, so the infrastructure got merged already and from there the next
> steps are in running with:
>
>   perf kvm --guest record -a -e cycles:H,kvm:kvm_exit
>
> And then, with the patch below applied, try:
>
> perf kvm --guestkallsyms kallsyms.guest --guestmodules modules.guest report -i perf.data.guest --munge-ppc-guest-sample kvm:kvm_exit


The initial proposal was to change the default event as "kvm_guest_exit" 
for kvm recording/reporting
on ppc. If I understand it correctly, your patch creates a handler for 
reporting kvm events
based on "munge_ppc_guest_event" and the required tracepoint i.e., we 
need to mention the
required tracepoint event name for recording and reporting.

There might be a little bit of an issue here. For scripts which depend 
on generic perf kvm record/report,
we need to change those appropriately to prevent those from failing on 
powerpc. Otherwise, (just a
thought) can we create some kind of an alias to map the ppc specific 
perf kvm commands with the
generic perf kvm.
For e.g :
perf kvm record -e "kvm_hv:kvm_guest_exit"  mapped to  perf kvm record
&
perf kvm report --munge-ppc-guest-sample kvm_hv:kvm_guest_exit mapped 
to  perf kvm report.


Regards,
Ravi

  reply	other threads:[~2016-03-28 10:58 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-24  9:07 [RFC 0/4] perf kvm: Guest Symbol Resolution for powerpc Ravi Bangoria
2016-02-24  9:07 ` [RFC 1/4] perf kvm: Enable 'record' on powerpc Ravi Bangoria
2016-03-22 19:12   ` Arnaldo Carvalho de Melo
2016-03-23  2:19     ` Arnaldo Carvalho de Melo
2016-03-24 21:15       ` Arnaldo Carvalho de Melo
2016-03-28 10:58         ` Ravi Bangoria [this message]
2016-03-28 12:28           ` Arnaldo Carvalho de Melo
2016-04-27 12:32         ` Ravi Bangoria
2016-04-27 21:47           ` Arnaldo Carvalho de Melo
2016-05-09 14:58             ` Ravi Bangoria
2016-02-24  9:07 ` [RFC 2/4] perf kvm: Introduce evsel as argument to perf_event__preprocess_sample Ravi Bangoria
2016-02-24  9:07 ` [RFC 3/4] perf kvm: Enable 'report' on powerpc Ravi Bangoria
2016-02-24  9:07 ` [RFC 4/4] perf kvm: Fix output fields instead of 'trace' for perf kvm report " Ravi Bangoria
2016-03-02 14:25   ` Arnaldo Carvalho de Melo
2016-03-02 15:46     ` Ravi Bangoria
2016-03-02 16:22       ` Arnaldo Carvalho de Melo
2016-03-03  1:19         ` Ravi Bangoria
2016-03-08 15:42           ` Ravi Bangoria

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=56F90E65.4030809@linux.vnet.ibm.com \
    --to=ravi.bangoria@linux.vnet.ibm.com \
    --cc=acme@kernel.org \
    --cc=hemant@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=naveen.n.rao@linux.vnet.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).