From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Marcus Granado <marcus.granado@citrix.com>
Cc: Marcus Granado <Marcus.Granado@eu.citrix.com>,
"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
"msw@amazon.com" <msw@amazon.com>,
"andrew.thomas@oracle.com" <andrew.thomas@oracle.com>,
"boris.ostrovsky@amd.com" <boris.ostrovsky@amd.com>,
"Sherry.Hurwitz@amd.com" <Sherry.Hurwitz@amd.com>,
"jacob.shin@amd.com" <jacob.shin@amd.com>,
"Marcos.Matsunaga@oracle.com" <Marcos.Matsunaga@oracle.com>,
"JBeulich@suse.com" <JBeulich@suse.com>,
"jun.nakajima@intel.com" <jun.nakajima@intel.com>,
"kurt.hackel@oracle.com" <kurt.hackel@oracle.com>
Subject: Re: Xen, oprofile, perf, PEBS, event counters, PVHVM, PV
Date: Fri, 18 Jan 2013 10:43:36 -0500 [thread overview]
Message-ID: <20130118154336.GA10324@phenom.dumpdata.com> (raw)
In-Reply-To: <50F58DA5.5090809@citrix.com>
On Tue, Jan 15, 2013 at 05:11:01PM +0000, Marcus Granado wrote:
> On 14/01/13 20:45, Konrad Rzeszutek Wilk wrote:
> >a). 32/64 compat is missing backtrace support. If you run with a 32-bit dom0
> > and try to set the backtrace, the hypervisor sets is as -some-huge-number.
> > It might be there are some other hypercalls that need some compat tweaks.
>
> It's not clear to me if it is the same issue, but there was some
> work to make xenoprof's callgraph work with 32-bit domains on a
> 64-bit xen here:
> http://lists.xen.org/archives/html/xen-devel/2012-01/msg01721.html
> The patch should be nowin xen but it requires a one-linechange in
> the 32-bit dom0 kernel matching this one in xen:
> http://lists.xen.org/archives/html/xen-devel/2012-01/txt4qZ7uGGPTc.txt
>
> >b). 32-bit dom0 oprofile toolstack truncates the EIP of 64-bit guests
> > (or hypervisor). I am not really sure how to solve that except just
> > not run 64-bit guests/hypervisor with a 32-bit dom0. Or make
> > oprofile and its tools capable of doing 64-bit architecture.
> > The vice-versa condition does not exist - so I can profile 32-bit
> > guests using a 64-bit dom0.
> Afaics, the 32-bit dom0 oprofile.ko module receives the 64-bit eips;
> the XENOPROF_ESCAPE_CODE comparison is made as ULL in the kernel and
> seems to work. This could be happening maybe in either opcontrol,
> oprofiled or opreport, but with the patches above I obtained the
> following result in an idle 32-bit dom0, which seems to display the
> correct 64-bit memory location information for hypervisor functions:
>
>
> |# opreport -lwc #(functions calling other functions):|
> |CPU: Core ||2||, speed ||2493.77||MHz (estimated)|
> |Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with
> a unit mask of ||0x00||(Unhalted core cycles) count ||1000000|
> |vma samples % image name app name symbol name|
> |-------------------------------------------------------------------------------|
> |||00000000000b9610 ||1||2.0000||libc-||2.5||.so python
> getaddrinfo|
> |||000000000000fad0 ||1||2.0000||libpthread-||2.5||.so python
> _fini|
> |||000000000000e790 ||3||6.0000||ld-||2.5||.so python
> _dl_fini|
> |||000000000002aec0 ||12||24.0000||libc-||2.5||.so python
> msort_with_tmp|
> |||0000000000004480||25||50.0000||_xslib.so python
> init_xslib|
> |0000000000000000||415746||22.5841||libpython2.||4||.so.||1.0||python
> /usr/lib/libpython2.||4||.so.||1.0|
> |||0000000000000000||415746||100.000||libpython2.||4||.so.||1.0||python
> /usr/lib/libpython2.||4||.so.||1.0||[self]|
> |...|
> |-------------------------------------------------------------------------------|
> |ffff82c480170470 ||36||0.1587||xen-syms qemu-dm
> send_IPI_mask_flat|
> |||ffff82c480170470 ||36||100.000||xen-syms qemu-dm
> send_IPI_mask_flat [self]|
> |-------------------------------------------------------------------------------|
> |ffff82c480120d40 ||33||0.1455||xen-syms qemu-dm
> cpumask_raise_softirq|
> |||ffff82c480120d40 ||33||100.000||xen-syms qemu-dm
> cpumask_raise_softirq [self] |
>
>
>
> This quote from
> http://lists.xen.org/archives/html/xen-devel/2012-01/msg01721.htmlmay
> be useful:
> "
>
> A few comments from my tests with oprofile 0.9.6 in userspace:
>
> - to obtain callgraphs of the xen code, you need to enable
> theCONFIG_FRAME_POINTER flag during compilation of the xen binary,
> eg.using "make" with "frame_pointer=y".- if the oprofiled daemon is
> running in a 32-bit guest, it needs toreceive the xen-range in
> 32-bits, eg.
> --xen-image=/boot/xen-syms-4.1.1--xen-range=80100000,801fe5ee
> "
>
> > h). There are some counters in the hypervisor for the oprofile statistics, like
> > lost samples, etc. I does not look like they are exported/printed anywhere. Perhaps
> > an 'register_keyhandler' should be written to dump those (and also which domains
> > are profiled).
>
> I see some lost sample information when I run 'opcontrol --start
> --verbose=all', 'opcontrol --deinit' and look at oprofiled.log, are
> these the counters you are looking for?
> # cat /var/lib/oprofile/samples/oprofiled.log
> oprofiled started Tue Jan 15 16:02:00 2013
> kernel pointer size: 4
> Tue Jan 15 16:04:34 2013
> -- OProfile Statistics --
> Nr. sample dumps: 4
> Nr. non-backtrace samples: 25508
> Nr. kernel samples: 14344
> Nr. lost samples (no kernel/user): 0
> Nr. lost kernel samples: 0
> Nr. incomplete code structs: 0
> Nr. samples lost due to sample file open failure: 4569
> Nr. samples lost due to no permanent mapping: 78
> Nr. event lost due to buffer overflow: 0
> Nr. samples lost due to no mapping: 20
> Nr. backtraces skipped due to no file mapping: 0
> Nr. samples lost due to no mm: 4727
> ---- Statistics for cpu : 3
> Nr. samples lost cpu buffer overflow: 0
> Nr. samples received: 11734
> Nr. backtrace aborted: 0
> Nr. samples lost invalid pc: 0
> ...
>
>
> > i). opreports often tells me
> > warning: /domain1-apps could not be found.
> > warning: /domain1-modules could not be found.
> > warning: /domain1-xen-unknown could not be found.
> > warning: /domain2-apps could not be found.
> > warning: /domain2-modules could not be found.
> > warning: /domain2-xen-unknown could not be found.
> > warning: /domain3-apps could not be found.
> > warning: /domain3-modules could not be found.
> > warning: /domain3-xen-unknown could not be found.
> > warning: /vmlinux-unknown could not be found.
> > warning: /xen-unknown could not be found.
>
> These warnings remind me of what I was receiving for the dom0 kernel
> modules, I fixed them by using -p for the modules in opreport:
> # opreport -l -p/usr/lib/debug/lib/modules/`uname -r`
> I guess opreport may be in need of this parameter pointing to the
> guest kernel symbols.
>
> >And it occurs to me it could be possible be to make some inroads on making
> >performance monitoring easier:
> >
> > 1). fix the glaring omissions in oprofile for the new CPUs
> > 2). Add a register keyhandle to get some debug info.
> > 3). piggyback on oprofile hypercalls and insert some bridge in perf (lots
> > of handwaving here). Or perhaps emulate in the Linux kernel the
> > wmsrs (so xen_safe_wrmsrs) and have the pvops kernel based on the MSRs
> > make the hypercalls to setup the buffers, etc.
> >
> > 3a). new hypercalls? intercept rdmsr/wrmsrs and stuff the right data
> > in the initial domain? Other thoughts?
> >
> > 4). Extend perf to have '--xen' so it can also look at the xen-hypervisor
> > ELF file.
>
> 5) live event reports from xenoprof/opreport, ala perf top.
Is that in terms of a bridge code or just actually making 'perf' use the
proper hypercalls?
> 6) ports of oprofile kernel modules for other oses (bsd, windows,
> mirage), so that these oses can be used as active participants.
Based on the fact that oprofile is in maintaince mode I don't think
the other 6) makes much sense.
prev parent reply other threads:[~2013-01-18 15:43 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-14 20:45 Xen, oprofile, perf, PEBS, event counters, PVHVM, PV Konrad Rzeszutek Wilk
2013-01-15 9:13 ` Jan Beulich
2013-01-15 17:11 ` Marcus Granado
2013-01-16 4:47 ` Konrad Rzeszutek Wilk
2013-01-16 16:18 ` Boris Ostrovsky
2013-01-16 17:40 ` Suravee Suthikulpanit
2013-01-18 15:43 ` Konrad Rzeszutek Wilk [this message]
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=20130118154336.GA10324@phenom.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=JBeulich@suse.com \
--cc=Marcos.Matsunaga@oracle.com \
--cc=Marcus.Granado@eu.citrix.com \
--cc=Sherry.Hurwitz@amd.com \
--cc=andrew.thomas@oracle.com \
--cc=boris.ostrovsky@amd.com \
--cc=jacob.shin@amd.com \
--cc=jun.nakajima@intel.com \
--cc=kurt.hackel@oracle.com \
--cc=marcus.granado@citrix.com \
--cc=msw@amazon.com \
--cc=xen-devel@lists.xensource.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).