From: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
To: Dong Hao <haodong@linux.vnet.ibm.com>
Cc: avi@redhat.com, acme@infradead.org, mtosatti@redhat.com,
mingo@elte.hu, linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
David Ahern <dsahern@gmail.com>
Subject: Re: [PATCH v7 0/3] KVM: perf: kvm events analysis tool
Date: Mon, 27 Aug 2012 17:59:18 +0800 [thread overview]
Message-ID: <503B44F6.9050806@linux.vnet.ibm.com> (raw)
In-Reply-To: <1346061106-5364-1-git-send-email-haodong@linux.vnet.ibm.com>
CC David.
Hi David,
I should apologize to you that Dong forgot to post the patchset
to you. Could you pick these up from the mail list?
On 08/27/2012 05:51 PM, Dong Hao wrote:
> From: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
>
> Changelog:
> - rebased it on Arnaldo's newest git tree perf/core branch
>
> the change from Arnaldo's comments:
> - directly get event from evsel->tp_format
> - remove die() and return the proper error code
> - rename thread->private to thread->priv
>
> the change from David's comments:
> - use is_valid_tracepoint instead of kvm_events_exist
>
> This patchset introduces a perf-based tool (perf kvm stat record/report)
> which can analyze kvm events more smartly. Below is the presentation slice
> on 2012 Japan LinuxCon:
> http://events.linuxfoundation.org/images/stories/pdf/lcjp2012_guangrong.pdf
> You can get more details from it. If any questions/comments, please feel free
> to let us know.
>
> This patchset is based on Arnaldo's git tree perf/core branch, and patch 2
> is just doing the "improvement" work, which can be picked up independently.
>
>
> Usage:
> - kvm stat
> run a command and gather performance counter statistics, it is the alias of
> perf stat
>
> - trace kvm events:
> perf kvm stat record, or, if other tracepoints are interesting as well, we
> can append the events like this:
> perf kvm stat record -e kvm:*
> If many guests are running, we can track the specified guest by using -p or
> --pid
>
> - show the result:
> perf kvm stat report
>
> The output example is following:
> # pgrep qemu-kvm
> 26071
> 32253
> 32564
>
> total 3 guests are running on the host
>
> Then, track the guest whose pid is 26071:
> # ./perf kvm stat record -p 26071
> ^C[ perf record: Woken up 9 times to write data ]
> [ perf record: Captured and wrote 24.903 MB perf.data.guest (~1088034 samples) ]
>
> See the vmexit events:
> # ./perf kvm stat report --event=vmexit
>
> Analyze events for all VCPUs:
>
> VM-EXIT Samples Samples% Time% Avg time
>
> APIC_ACCESS 65381 66.58% 5.95% 37.72us ( +- 6.54% )
> EXTERNAL_INTERRUPT 16031 16.32% 3.06% 79.11us ( +- 7.34% )
> CPUID 5360 5.46% 0.06% 4.50us ( +- 35.07% )
> HLT 4496 4.58% 90.75% 8360.34us ( +- 5.22% )
> EPT_VIOLATION 2667 2.72% 0.04% 5.49us ( +- 5.05% )
> PENDING_INTERRUPT 2242 2.28% 0.03% 5.25us ( +- 2.96% )
> EXCEPTION_NMI 1332 1.36% 0.02% 6.53us ( +- 6.51% )
> IO_INSTRUCTION 383 0.39% 0.09% 93.39us ( +- 40.92% )
> CR_ACCESS 310 0.32% 0.00% 6.10us ( +- 3.95% )
>
> Total Samples:98202, Total events handled time:41419293.63us.
>
> See the mmio events:
> # ./perf kvm stat report --event=mmio
>
> Analyze events for all VCPUs:
>
> MMIO Access Samples Samples% Time% Avg time
>
> 0xfee00380:W 58686 90.21% 15.67% 4.95us ( +- 2.96% )
> 0xfee00300:R 2124 3.26% 1.48% 12.93us ( +- 14.75% )
> 0xfee00310:W 2124 3.26% 0.34% 3.00us ( +- 1.33% )
> 0xfee00300:W 2123 3.26% 82.50% 720.68us ( +- 10.24% )
>
> Total Samples:65057, Total events handled time:1854470.45us.
>
> See the ioport event:
> # ./perf kvm stat report --event=ioport
>
> Analyze events for all VCPUs:
>
> IO Port Access Samples Samples% Time% Avg time
>
> 0xc090:POUT 383 100.00% 100.00% 89.00us ( +- 42.94% )
>
> Total Samples:383, Total events handled time:34085.56us.
>
> And, --vcpu is used to track the specified vcpu and --key is used to sort the
> result:
> # ./perf kvm stat report --event=vmexit --vcpu=0 --key=time
>
> Analyze events for VCPU 0:
>
> VM-EXIT Samples Samples% Time% Avg time
>
> HLT 551 5.05% 94.81% 9501.72us ( +- 12.52% )
> EXTERNAL_INTERRUPT 1390 12.74% 2.39% 94.80us ( +- 20.92% )
> APIC_ACCESS 6186 56.68% 2.62% 23.41us ( +- 23.62% )
> IO_INSTRUCTION 17 0.16% 0.01% 20.39us ( +- 22.33% )
> EXCEPTION_NMI 94 0.86% 0.01% 6.07us ( +- 7.13% )
> PENDING_INTERRUPT 199 1.82% 0.02% 5.48us ( +- 4.36% )
> CR_ACCESS 52 0.48% 0.00% 4.89us ( +- 4.09% )
> EPT_VIOLATION 2057 18.85% 0.12% 3.15us ( +- 1.33% )
> CPUID 368 3.37% 0.02% 2.82us ( +- 2.79% )
>
> Total Samples:10914, Total events handled time:5521782.02us.
>
>
> Dong Hao (3):
> KVM: x86: export svm/vmx exit code and vector code to userspace
> KVM: x86: trace mmio begin and complete
> KVM: perf: kvm events analysis tool
>
> arch/x86/include/asm/kvm_host.h | 36 +-
> arch/x86/include/asm/svm.h | 205 +++++---
> arch/x86/include/asm/vmx.h | 126 +++--
> arch/x86/kvm/trace.h | 89 ----
> arch/x86/kvm/x86.c | 32 +-
> include/trace/events/kvm.h | 37 ++
> tools/perf/Documentation/perf-kvm.txt | 30 +-
> tools/perf/MANIFEST | 3 +
> tools/perf/builtin-kvm.c | 889 ++++++++++++++++++++++++++++++++-
> tools/perf/util/header.c | 54 ++-
> tools/perf/util/header.h | 1 +
> tools/perf/util/thread.h | 2 +
> 12 files changed, 1264 insertions(+), 240 deletions(-)
>
next prev parent reply other threads:[~2012-08-27 9:59 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-27 9:51 [PATCH v7 0/3] KVM: perf: kvm events analysis tool Dong Hao
2012-08-27 9:51 ` [PATCH v7 1/3] KVM: x86: export svm/vmx exit code and vector code to userspace Dong Hao
2012-09-03 11:13 ` Avi Kivity
2012-09-04 3:53 ` Xiao Guangrong
2012-08-27 9:51 ` [PATCH v7 2/3] KVM: x86: trace mmio begin and complete Dong Hao
2012-09-03 11:07 ` Avi Kivity
2012-09-04 4:06 ` Xiao Guangrong
2012-08-27 9:51 ` [PATCH v7 3/3] KVM: perf: kvm events analysis tool Dong Hao
2012-08-27 15:53 ` Andrew Jones
2012-08-27 19:34 ` David Ahern
2012-08-28 6:35 ` Andrew Jones
2012-08-28 17:19 ` David Ahern
2012-09-02 13:51 ` don
2012-08-30 18:29 ` David Ahern
2012-09-03 8:48 ` don
2012-09-03 16:04 ` David Ahern
2012-09-13 4:56 ` David Ahern
2012-09-13 13:45 ` Arnaldo Carvalho de Melo
2012-09-13 14:14 ` David Ahern
2012-09-13 14:31 ` Arnaldo Carvalho de Melo
2012-09-14 2:56 ` Xiao Guangrong
2012-09-14 11:51 ` David Ahern
2012-08-27 9:59 ` Xiao Guangrong [this message]
2012-08-27 12:53 ` [PATCH v7 0/3] " David Ahern
-- strict thread matches above, loose matches on Subject: below --
2012-08-24 1:15 Dong Hao
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=503B44F6.9050806@linux.vnet.ibm.com \
--to=xiaoguangrong@linux.vnet.ibm.com \
--cc=acme@infradead.org \
--cc=avi@redhat.com \
--cc=dsahern@gmail.com \
--cc=haodong@linux.vnet.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mtosatti@redhat.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.