Message ID | 1431047266-6206-1-git-send-email-hemant@linux.vnet.ibm.com |
---|---|
State | New, archived |
Headers | show |
* Hemant Kumar <hemant@linux.vnet.ibm.com> wrote: > # perf kvm stat report -p 60515 > Analyze events for pid(s) 60515, all VCPUs: > > VM-EXIT Samples Samples% Time% Min Time Max Time Avg time > > H_DATA_STORAGE 5006 35.30% 0.13% 1.94us 49.46us 12.37us ( +- 0.52% ) > HV_DECREMENTER 4457 31.43% 0.02% 0.72us 16.14us 1.91us ( +- 0.96% ) > SYSCALL 2690 18.97% 0.10% 2.84us 528.24us 18.29us ( +- 3.75% ) > RETURN_TO_HOST 1789 12.61% 99.76% 1.58us 672791.91us 27470.23us ( +- 3.00% ) > EXTERNAL 240 1.69% 0.00% 0.69us 10.67us 1.33us ( +- 5.34% ) Where is the last line misaligned? Copy & paste error or does perf kvm produce it in such a way? Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 05/08/2015 09:58 AM, Ingo Molnar wrote: > * Hemant Kumar <hemant@linux.vnet.ibm.com> wrote: > >> # perf kvm stat report -p 60515 >> Analyze events for pid(s) 60515, all VCPUs: >> >> VM-EXIT Samples Samples% Time% Min Time Max Time Avg time >> >> H_DATA_STORAGE 5006 35.30% 0.13% 1.94us 49.46us 12.37us ( +- 0.52% ) >> HV_DECREMENTER 4457 31.43% 0.02% 0.72us 16.14us 1.91us ( +- 0.96% ) >> SYSCALL 2690 18.97% 0.10% 2.84us 528.24us 18.29us ( +- 3.75% ) >> RETURN_TO_HOST 1789 12.61% 99.76% 1.58us 672791.91us 27470.23us ( +- 3.00% ) >> EXTERNAL 240 1.69% 0.00% 0.69us 10.67us 1.33us ( +- 5.34% ) > Where is the last line misaligned? Copy & paste error or does perf kvm > produce it in such a way? Its a copy-paste error. Thanks for pointing this out. Shall I resend the patches with the correct alignment of the o/p? > Thanks, > > Ingo >
* Hemant Kumar <hemant@linux.vnet.ibm.com> wrote: > > On 05/08/2015 09:58 AM, Ingo Molnar wrote: > >* Hemant Kumar <hemant@linux.vnet.ibm.com> wrote: > > > >> # perf kvm stat report -p 60515 > >>Analyze events for pid(s) 60515, all VCPUs: > >> > >> VM-EXIT Samples Samples% Time% Min Time Max Time Avg time > >> > >>H_DATA_STORAGE 5006 35.30% 0.13% 1.94us 49.46us 12.37us ( +- 0.52% ) > >>HV_DECREMENTER 4457 31.43% 0.02% 0.72us 16.14us 1.91us ( +- 0.96% ) > >> SYSCALL 2690 18.97% 0.10% 2.84us 528.24us 18.29us ( +- 3.75% ) > >>RETURN_TO_HOST 1789 12.61% 99.76% 1.58us 672791.91us 27470.23us ( +- 3.00% ) > >> EXTERNAL 240 1.69% 0.00% 0.69us 10.67us 1.33us ( +- 5.34% ) > >Where is the last line misaligned? Copy & paste error or does perf kvm > >produce it in such a way? > > Its a copy-paste error. Thanks for pointing this out. > > Shall I resend the patches with the correct alignment of the o/p? I don't think that's necessary, as long as the code is fine. Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, 2015-05-08 at 06:37 +0530, Hemant Kumar wrote: > From: Srikar Dronamraju <srikar@linux.vnet.ibm.com> > > perf kvm can be used to analyze guest exit reasons. This support already > exists in x86. Hence, porting it to powerpc. > > - To trace KVM events : > perf kvm stat record > If many guests are running, we can track for a specific guest by using > --pid as in : perf kvm stat record --pid <pid> > > - To see the results : > perf kvm stat report > > The result shows the number of exits (from the guest context to > host/hypervisor context) grouped by their respective exit reasons with > their frequency. > > This patch makes use of the guest exit reasons available in > "trace_book3s.h". It records on two already available tracepoints : > "kvm_hv:kvm_guest_exit" and "kvm_hv:kvm_guest_enter". > > Note : This patch has a dependency on the patch "kvm/powerpc: Export > kvm exit reasons" which exports the KVM exit reasons through the uapi. > > Here is a sample o/p: > # pgrep qemu > 19378 > 60515 > > 2 Guests are running on the host. > > # perf kvm stat record -a > ^C[ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 4.153 MB perf.data.guest (39624 samples) ] > > # perf kvm stat report -p 60515 > Analyze events for pid(s) 60515, all VCPUs: > > VM-EXIT Samples Samples% Time% Min Time Max Time Avg time > > H_DATA_STORAGE 5006 35.30% 0.13% 1.94us 49.46us 12.37us ( +- 0.52% ) > HV_DECREMENTER 4457 31.43% 0.02% 0.72us 16.14us 1.91us ( +- 0.96% ) > SYSCALL 2690 18.97% 0.10% 2.84us 528.24us 18.29us ( +- 3.75% ) > RETURN_TO_HOST 1789 12.61% 99.76% 1.58us 672791.91us 27470.23us ( +- 3.00% ) > EXTERNAL 240 1.69% 0.00% 0.69us 10.67us 1.33us ( +- 5.34% ) > > Total Samples:14182, Total events handled time:49264158.30us. > > Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> > Signed-off-by: Hemant Kumar <hemant@linux.vnet.ibm.com> > --- > Patch has a dependency on : https://patchwork.ozlabs.org/patch/469839/ > which exports the exit reasons to perf through uapi. > > Changes: > - Original series split into two patchsets now : perf and powerpc > side changes. > > arch/powerpc/include/uapi/asm/kvm_perf.h | 15 +++++++++++++++ > tools/perf/arch/powerpc/Makefile | 1 + > tools/perf/arch/powerpc/util/Build | 1 + > tools/perf/arch/powerpc/util/kvm-stat.c | 33 ++++++++++++++++++++++++++++++++ > 4 files changed, 50 insertions(+) > create mode 100644 arch/powerpc/include/uapi/asm/kvm_perf.h > create mode 100644 tools/perf/arch/powerpc/util/kvm-stat.c > > diff --git a/arch/powerpc/include/uapi/asm/kvm_perf.h b/arch/powerpc/include/uapi/asm/kvm_perf.h > new file mode 100644 > index 0000000..30fa670 > --- /dev/null > +++ b/arch/powerpc/include/uapi/asm/kvm_perf.h > @@ -0,0 +1,15 @@ > +#ifndef _ASM_POWERPC_KVM_PERF_H > +#define _ASM_POWERPC_KVM_PERF_H > + > +#include <asm/trace_book3s.h> > +#include <asm/kvm.h> > + > +#define DECODE_STR_LEN 20 > + > +#define VCPU_ID "vcpu_id" > + > +#define KVM_ENTRY_TRACE "kvm_hv:kvm_guest_enter" > +#define KVM_EXIT_TRACE "kvm_hv:kvm_guest_exit" > +#define KVM_EXIT_REASON "trap" > + > +#endif /* _ASM_POWERPC_KVM_PERF_H */ Please make sure that anything book3s-specific is named that way. And shouldn't this be part of the arch/powerpc-side patchset? > diff --git a/tools/perf/arch/powerpc/Makefile b/tools/perf/arch/powerpc/Makefile > index 7fbca17..21322e0 100644 > --- a/tools/perf/arch/powerpc/Makefile > +++ b/tools/perf/arch/powerpc/Makefile > @@ -1,3 +1,4 @@ > ifndef NO_DWARF > PERF_HAVE_DWARF_REGS := 1 > endif > +HAVE_KVM_STAT_SUPPORT := 1 Does this stuff fail gracefully if used on a PPC target that doesn't support this? -Scott -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Scott, On 05/12/2015 03:38 AM, Scott Wood wrote: > On Fri, 2015-05-08 at 06:37 +0530, Hemant Kumar wrote: >> From: Srikar Dronamraju <srikar@linux.vnet.ibm.com> >> >> perf kvm can be used to analyze guest exit reasons. This support already >> exists in x86. Hence, porting it to powerpc. >> >> - To trace KVM events : >> perf kvm stat record >> If many guests are running, we can track for a specific guest by using >> --pid as in : perf kvm stat record --pid <pid> >> >> - To see the results : >> perf kvm stat report >> >> The result shows the number of exits (from the guest context to >> host/hypervisor context) grouped by their respective exit reasons with >> their frequency. >> >> This patch makes use of the guest exit reasons available in >> "trace_book3s.h". It records on two already available tracepoints : >> "kvm_hv:kvm_guest_exit" and "kvm_hv:kvm_guest_enter". >> >> Note : This patch has a dependency on the patch "kvm/powerpc: Export >> kvm exit reasons" which exports the KVM exit reasons through the uapi. >> >> Here is a sample o/p: >> # pgrep qemu >> 19378 >> 60515 >> >> 2 Guests are running on the host. >> >> # perf kvm stat record -a >> ^C[ perf record: Woken up 1 times to write data ] >> [ perf record: Captured and wrote 4.153 MB perf.data.guest (39624 samples) ] >> >> # perf kvm stat report -p 60515 >> Analyze events for pid(s) 60515, all VCPUs: >> >> VM-EXIT Samples Samples% Time% Min Time Max Time Avg time >> >> H_DATA_STORAGE 5006 35.30% 0.13% 1.94us 49.46us 12.37us ( +- 0.52% ) >> HV_DECREMENTER 4457 31.43% 0.02% 0.72us 16.14us 1.91us ( +- 0.96% ) >> SYSCALL 2690 18.97% 0.10% 2.84us 528.24us 18.29us ( +- 3.75% ) >> RETURN_TO_HOST 1789 12.61% 99.76% 1.58us 672791.91us 27470.23us ( +- 3.00% ) >> EXTERNAL 240 1.69% 0.00% 0.69us 10.67us 1.33us ( +- 5.34% ) >> >> Total Samples:14182, Total events handled time:49264158.30us. >> >> Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> >> Signed-off-by: Hemant Kumar <hemant@linux.vnet.ibm.com> >> --- >> Patch has a dependency on : https://patchwork.ozlabs.org/patch/469839/ >> which exports the exit reasons to perf through uapi. >> >> Changes: >> - Original series split into two patchsets now : perf and powerpc >> side changes. >> >> arch/powerpc/include/uapi/asm/kvm_perf.h | 15 +++++++++++++++ >> tools/perf/arch/powerpc/Makefile | 1 + >> tools/perf/arch/powerpc/util/Build | 1 + >> tools/perf/arch/powerpc/util/kvm-stat.c | 33 ++++++++++++++++++++++++++++++++ >> 4 files changed, 50 insertions(+) >> create mode 100644 arch/powerpc/include/uapi/asm/kvm_perf.h >> create mode 100644 tools/perf/arch/powerpc/util/kvm-stat.c >> >> diff --git a/arch/powerpc/include/uapi/asm/kvm_perf.h b/arch/powerpc/include/uapi/asm/kvm_perf.h >> new file mode 100644 >> index 0000000..30fa670 >> --- /dev/null >> +++ b/arch/powerpc/include/uapi/asm/kvm_perf.h >> @@ -0,0 +1,15 @@ >> +#ifndef _ASM_POWERPC_KVM_PERF_H >> +#define _ASM_POWERPC_KVM_PERF_H >> + >> +#include <asm/trace_book3s.h> >> +#include <asm/kvm.h> >> + >> +#define DECODE_STR_LEN 20 >> + >> +#define VCPU_ID "vcpu_id" >> + >> +#define KVM_ENTRY_TRACE "kvm_hv:kvm_guest_enter" >> +#define KVM_EXIT_TRACE "kvm_hv:kvm_guest_exit" >> +#define KVM_EXIT_REASON "trap" >> + >> +#endif /* _ASM_POWERPC_KVM_PERF_H */ > Please make sure that anything book3s-specific is named that way. Are you suggesting to name it to something like _ASM_POWERPC_BOOK3S_PERF_H ? > And shouldn't this be part of the arch/powerpc-side patchset? It should. Thanks, will move this to arch/powerpc side patchset. >> diff --git a/tools/perf/arch/powerpc/Makefile b/tools/perf/arch/powerpc/Makefile >> index 7fbca17..21322e0 100644 >> --- a/tools/perf/arch/powerpc/Makefile >> +++ b/tools/perf/arch/powerpc/Makefile >> @@ -1,3 +1,4 @@ >> ifndef NO_DWARF >> PERF_HAVE_DWARF_REGS := 1 >> endif >> +HAVE_KVM_STAT_SUPPORT := 1 > Does this stuff fail gracefully if used on a PPC target that doesn't > support this? Yes, it does. > -Scott > > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/linuxppc-dev
On Tue, 2015-05-12 at 21:34 +0530, Hemant Kumar wrote: > Hi Scott, > > On 05/12/2015 03:38 AM, Scott Wood wrote: > > On Fri, 2015-05-08 at 06:37 +0530, Hemant Kumar wrote: > >> diff --git a/arch/powerpc/include/uapi/asm/kvm_perf.h b/arch/powerpc/include/uapi/asm/kvm_perf.h > >> new file mode 100644 > >> index 0000000..30fa670 > >> --- /dev/null > >> +++ b/arch/powerpc/include/uapi/asm/kvm_perf.h > >> @@ -0,0 +1,15 @@ > >> +#ifndef _ASM_POWERPC_KVM_PERF_H > >> +#define _ASM_POWERPC_KVM_PERF_H > >> + > >> +#include <asm/trace_book3s.h> > >> +#include <asm/kvm.h> > >> + > >> +#define DECODE_STR_LEN 20 > >> + > >> +#define VCPU_ID "vcpu_id" > >> + > >> +#define KVM_ENTRY_TRACE "kvm_hv:kvm_guest_enter" > >> +#define KVM_EXIT_TRACE "kvm_hv:kvm_guest_exit" > >> +#define KVM_EXIT_REASON "trap" > >> + > >> +#endif /* _ASM_POWERPC_KVM_PERF_H */ > > Please make sure that anything book3s-specific is named that way. > > Are you suggesting to name it to something like _ASM_POWERPC_BOOK3S_PERF_H ? My concern is seeing a generically named "kvm_perf.h" include a file called "trace_book3s.h" which defines "kvm_trace_symbol_hcall" with presumably book3s-specific content, as well as wondering how much of the rest of the file would be applicable if booke PPC were to implement perf kvm. I don't know enough about perf kvm to answer that question, but I've seen enough cases of book3s or pseries specific code that was apparently written with the belief that no other ppc64 implementations exist, or that no other ppc implementations would want to implement a certain feature, to be suspicous. Usually such cases can be dealt with after the fact (albeit not as easily as if things were organized/namespaced properly from the beginning), but this is uapi... -Scott -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Scott, On 05/13/2015 08:52 AM, Scott Wood wrote: > On Tue, 2015-05-12 at 21:34 +0530, Hemant Kumar wrote: >> Hi Scott, >> >> On 05/12/2015 03:38 AM, Scott Wood wrote: >>> On Fri, 2015-05-08 at 06:37 +0530, Hemant Kumar wrote: >>>> diff --git a/arch/powerpc/include/uapi/asm/kvm_perf.h b/arch/powerpc/include/uapi/asm/kvm_perf.h >>>> new file mode 100644 >>>> index 0000000..30fa670 >>>> --- /dev/null >>>> +++ b/arch/powerpc/include/uapi/asm/kvm_perf.h >>>> @@ -0,0 +1,15 @@ >>>> +#ifndef _ASM_POWERPC_KVM_PERF_H >>>> +#define _ASM_POWERPC_KVM_PERF_H >>>> + >>>> +#include <asm/trace_book3s.h> >>>> +#include <asm/kvm.h> >>>> + >>>> +#define DECODE_STR_LEN 20 >>>> + >>>> +#define VCPU_ID "vcpu_id" >>>> + >>>> +#define KVM_ENTRY_TRACE "kvm_hv:kvm_guest_enter" >>>> +#define KVM_EXIT_TRACE "kvm_hv:kvm_guest_exit" >>>> +#define KVM_EXIT_REASON "trap" >>>> + >>>> +#endif /* _ASM_POWERPC_KVM_PERF_H */ >>> Please make sure that anything book3s-specific is named that way. >> Are you suggesting to name it to something like _ASM_POWERPC_BOOK3S_PERF_H ? > My concern is seeing a generically named "kvm_perf.h" include a file > called "trace_book3s.h" which defines "kvm_trace_symbol_hcall" with > presumably book3s-specific content, as well as wondering how much of the > rest of the file would be applicable if booke PPC were to implement perf > kvm. > > I don't know enough about perf kvm to answer that question, but I've > seen enough cases of book3s or pseries specific code that was apparently > written with the belief that no other ppc64 implementations exist, or > that no other ppc implementations would want to implement a certain > feature, to be suspicous. Usually such cases can be dealt with after > the fact (albeit not as easily as if things were organized/namespaced > properly from the beginning), but this is uapi... > > -Scott > > > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/linuxppc-dev Tried to address your comments in v4 : http://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg89490.html and http://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg89485.html
diff --git a/arch/powerpc/include/uapi/asm/kvm_perf.h b/arch/powerpc/include/uapi/asm/kvm_perf.h new file mode 100644 index 0000000..30fa670 --- /dev/null +++ b/arch/powerpc/include/uapi/asm/kvm_perf.h @@ -0,0 +1,15 @@ +#ifndef _ASM_POWERPC_KVM_PERF_H +#define _ASM_POWERPC_KVM_PERF_H + +#include <asm/trace_book3s.h> +#include <asm/kvm.h> + +#define DECODE_STR_LEN 20 + +#define VCPU_ID "vcpu_id" + +#define KVM_ENTRY_TRACE "kvm_hv:kvm_guest_enter" +#define KVM_EXIT_TRACE "kvm_hv:kvm_guest_exit" +#define KVM_EXIT_REASON "trap" + +#endif /* _ASM_POWERPC_KVM_PERF_H */ diff --git a/tools/perf/arch/powerpc/Makefile b/tools/perf/arch/powerpc/Makefile index 7fbca17..21322e0 100644 --- a/tools/perf/arch/powerpc/Makefile +++ b/tools/perf/arch/powerpc/Makefile @@ -1,3 +1,4 @@ ifndef NO_DWARF PERF_HAVE_DWARF_REGS := 1 endif +HAVE_KVM_STAT_SUPPORT := 1 diff --git a/tools/perf/arch/powerpc/util/Build b/tools/perf/arch/powerpc/util/Build index 0af6e9b..dd47b5e 100644 --- a/tools/perf/arch/powerpc/util/Build +++ b/tools/perf/arch/powerpc/util/Build @@ -1,4 +1,5 @@ libperf-y += header.o +libperf-y += kvm-stat.o libperf-$(CONFIG_DWARF) += dwarf-regs.o libperf-$(CONFIG_DWARF) += skip-callchain-idx.o diff --git a/tools/perf/arch/powerpc/util/kvm-stat.c b/tools/perf/arch/powerpc/util/kvm-stat.c new file mode 100644 index 0000000..62cdcc1 --- /dev/null +++ b/tools/perf/arch/powerpc/util/kvm-stat.c @@ -0,0 +1,33 @@ +#include "../../util/kvm-stat.h" +#include <asm/kvm_perf.h> + +define_exit_reasons_table(hv_exit_reasons, kvm_trace_symbol_exit); + +static struct kvm_events_ops exit_events = { + .is_begin_event = exit_event_begin, + .is_end_event = exit_event_end, + .decode_key = exit_event_decode_key, + .name = "VM-EXIT" +}; + +const char *const kvm_events_tp[] = { + "kvm_hv:kvm_guest_exit", + "kvm_hv:kvm_guest_enter", + NULL, +}; + +struct kvm_reg_events_ops kvm_reg_events_ops[] = { + { .name = "vmexit", .ops = &exit_events }, + { NULL, NULL }, +}; + +const char * const kvm_skip_events[] = { + NULL, +}; + +int cpu_isa_init(struct perf_kvm_stat *kvm, const char *cpuid __maybe_unused) +{ + kvm->exit_reasons = hv_exit_reasons; + kvm->exit_reasons_isa = "HV"; + return 0; +}