Messages in this thread | | | Subject | Re: [PATCH] perf kvm record/report: 'unprocessable sample' error while recording/reporting guest data | From | Ravi Bangoria <> | Date | Thu, 17 Dec 2015 09:48:03 +0530 |
| |
Hi acme,
I sent this patch few days ago. Unfortunately nobody has payed attention.
Can you please pick this up.
Regards, Ravi
On Monday 07 December 2015 12:25 PM, Ravi Bangoria wrote: > While recording guest samples in host using perf kvm record, it will > populate unprocessable sample error, though samples will be recorded > properly. While generating report using perf kvm report, no samples will > be processed and same error will populate. We have seen this behaviour > with upstream perf(4.4-rc3) on x86 and ppc64 hardware. > > Reason behind this failure is, when it tries to fetch machine from rb_tree > of machines, it fails. As a part of tracing a bug, we figured out that this > code was incorrectly refactored in commit 54245fdc357613633954bfd38cffb71cb9def067 > ("perf session: Remove wrappers to machines__find") > > This patch will change the functionality such that if it can't fetch > machine in first trial, it will create one node of machine and add that to > rb_tree. So next time when it tries to fetch same machine from rb_tree, > it won't fail. Actually it was the case before refactoring of code in > aforementioned commit. > > This patch is generated from acme perf/core branch. > > Below I've mention an example that demonstrate the behaviour before and > after applying patch. > > Before applying patch: > [Note: One needs to run guest before recording data in host] > > ravi@ravi-bangoria:~$ ./perf kvm record -a > Warning: > 5903 unprocessable samples recorded. > Do you have a KVM guest running and not using 'perf kvm'? > [ perf record: Captured and wrote 1.409 MB perf.data.guest (285 samples) ] > > ravi@ravi-bangoria:~$ ./perf kvm report --stdio > Warning: > 5903 unprocessable samples recorded. > Do you have a KVM guest running and not using 'perf kvm'? > # To display the perf.data header info, please use --header/--header-only options. > # > # > # Total Lost Samples: 0 > # > # Samples: 285 of event 'cycles' > # Event count (approx.): 88715406 > # > # Overhead Command Shared Object Symbol > # ........ ....... ............. ...... > # > > # > # (For a higher level overview, try: perf report --sort comm,dso) > # > > After applying patch: > > ravi@ravi-bangoria:~$ ./perf kvm record -a > [ perf record: Captured and wrote 1.188 MB perf.data.guest (17 samples) ] > > ravi@ravi-bangoria:~$ ./perf kvm report --stdio > # To display the perf.data header info, please use --header/--header-only options. > # > # > # Total Lost Samples: 0 > # > # Samples: 17 of event 'cycles' > # Event count (approx.): 700746 > # > # Overhead Command Shared Object Symbol > # ........ ....... ................ ...................... > # > 34.19% :5758 [unknown] [g] 0xffffffff818682ab > 22.79% :5758 [unknown] [g] 0xffffffff812dc7f8 > 22.79% :5758 [unknown] [g] 0xffffffff818650d0 > 14.83% :5758 [unknown] [g] 0xffffffff8161a1b6 > 2.49% :5758 [unknown] [g] 0xffffffff818692bf > 0.48% :5758 [unknown] [g] 0xffffffff81869253 > 0.05% :5758 [unknown] [g] 0xffffffff81869250 > > Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com> > --- > tools/perf/util/session.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c > index c35ffdd..468de95 100644 > --- a/tools/perf/util/session.c > +++ b/tools/perf/util/session.c > @@ -972,7 +972,7 @@ static struct machine *machines__find_for_cpumode(struct machines *machines, > > machine = machines__find(machines, pid); > if (!machine) > - machine = machines__find(machines, DEFAULT_GUEST_KERNEL_ID); > + machine = machines__findnew(machines, DEFAULT_GUEST_KERNEL_ID); > return machine; > } >
| |