[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <37D7C6CF3E00A74B8858931C1DB2F077537BF0A8@SHSMSX103.ccr.corp.intel.com>
Date: Fri, 15 Sep 2017 15:11:51 +0000
From: "Liang, Kan" <kan.liang@...el.com>
To: Arnaldo Carvalho de Melo <acme@...nel.org>
CC: "peterz@...radead.org" <peterz@...radead.org>,
"mingo@...hat.com" <mingo@...hat.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"jolsa@...nel.org" <jolsa@...nel.org>,
"namhyung@...nel.org" <namhyung@...nel.org>,
"Hunter, Adrian" <adrian.hunter@...el.com>,
"Odzioba, Lukasz" <lukasz.odzioba@...el.com>,
"ak@...ux.intel.com" <ak@...ux.intel.com>
Subject: RE: [PATCH RFC V2 00/10] perf top optimization
> Em Wed, Sep 13, 2017 at 12:38:19PM -0300, Arnaldo Carvalho de Melo
> escreveu:
> > Em Wed, Sep 13, 2017 at 03:29:44PM +0000, Liang, Kan escreveu:
> > > >
> > > > Em Sun, Sep 10, 2017 at 07:23:13PM -0700, kan.liang@...el.com
> escreveu:
> > > >
> > > > So I got the first two patches already merged, and made some
> > > > comments about the other patches, please check those,
> > > >
> > >
> > > Thanks for the review Arnaldo.
> > >
> > > I will take a close look for the comments.
> > > For the next version, I only need to include patch 3-10, correct?
> >
> > Right, and go from my perf/core branch. The hashtable patch is still
> > not there as I am running tests before pushing out, but it should be
> > there later today.
>
> So, its at my repo, branch tmp.perf/threads_hashtable
>
> But 'perf trace' is broken, please take a look below:
>
> [root@...et ~]# gdb -c core
> GNU gdb (GDB) Fedora 8.0-20.fc26
> <SNIP>
> Core was generated by `perf trace -e block:block_bio_queue'.
> Program terminated with signal SIGSEGV, Segmentation fault.
> #0 0x000000000051089a in ?? ()
> (gdb) file perf
> Reading symbols from perf...done.
> (gdb) bt
> #0 0x000000000051089a in ____machine__findnew_thread
> (machine=0x3dfcab0, threads=0x3dfca78, pid=-1, tid=-1, create=false) at
> util/machine.c:429
I think the root cause is tid==-1. So the index of hashtable will be -1.
The patch as below should fix it.
diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h
index e6d5381..3c564b8 100644
--- a/tools/perf/util/machine.h
+++ b/tools/perf/util/machine.h
@@ -57,7 +57,7 @@ struct machine {
static inline struct threads *machine__threads(struct machine *machine, pid_t tid)
{
- return &machine->threads[tid % THREADS__TABLE_SIZE];
+ return &machine->threads[(unsigned int)tid % THREADS__TABLE_SIZE];
}
static inline
There should be another issue which was introduced by
33013b9a5607 ("perf machine: Optimize a bit the machine__findnew_thread() methods")
It should use tid not pid to get the threads.
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 90ae9c7..ddeea05 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -473,7 +473,7 @@ static struct thread *____machine__findnew_thread(struct machine *machine,
struct thread *__machine__findnew_thread(struct machine *machine, pid_t pid, pid_t tid)
{
- return ____machine__findnew_thread(machine, machine__threads(machine, pid), pid, tid, true);
+ return ____machine__findnew_thread(machine, machine__threads(machine, tid), pid, tid, true);
}
They are small fixes. I think it's better to merge them with the old patches.
Should I include the modified hashtable patches in V3?
Thanks,
Kan
Powered by blists - more mailing lists