Re: [PATCH 01/17] perf hists: Basic support of hierarchical report view

From: Namhyung Kim
Date: Tue Jan 19 2016 - 05:52:22 EST


Hi Jiri,

On Sun, Jan 17, 2016 at 05:15:33PM +0100, Jiri Olsa wrote:
> On Sun, Jan 17, 2016 at 01:03:01AM +0900, Namhyung Kim wrote:
>
> SNIP
>
> > char *srcfile;
> > struct symbol *parent;
> > - struct rb_root sorted_chain;
> > struct branch_info *branch_info;
> > struct hists *hists;
> > struct mem_info *mem_info;
> > void *raw_data;
> > u32 raw_size;
> > void *trace_output;
> > + struct perf_hpp_fmt *fmt;
> > + struct hist_entry *parent_he;
> > + union {
> > + /* this is for hierarchical entry structure */
> > + struct {
> > + struct rb_root hroot_in;
> > + struct rb_root hroot_out;
> > + }; /* non-leaf entries */
> > + struct rb_root sorted_chain; /* leaf entry has callchains */
> > + };
>
> looks like cool feature!

Thanks!

>
> could we have the hist_entry storage little more generic?
> and maybe dynamically allocated?

I'm fine with it.

>
> I'm doing the same thing for the c2c stuff, like having
> for each hist_entry its own 'struct hists' object, which
> records data related to parent hist_entry
>
> maybe we could strip the 'hists' object to some bare minimum
> which is needed for store/sort/stat and display entries
> in hists_browser ;-)

Yeah, as you can see, it basically needs a pointer to parent entry,
hpp output format, and rbtrees for chlidren. Also I added depth and
leaf field to make it easy for browser routines.

>
> I'm preparing RFC patchset in my perf/c2c branch, if you want
> to take a look

Sure.

>
> however, as I said above, for my own sake it all boils down
> to have 'hists' object within hist_entry, so I can use it
> in the UI code easily
>
> FYI I also added support for hists object's own sort/output
> format lists.. which I'll curve out and send for review soon

OK, will take a look.

Thanks,
Namhyung