Hi Kan,

On Wed, 19 Nov 2014 14:17:33 +0000, Kan Liang wrote:
>> 
>> On Tue, 18 Nov 2014 11:38:20 -0500, kan liang wrote:
>> > From: Kan Liang <kan.li...@intel.com>
>> >
>> > Sometime, especially debugging scaling issue, the function level diff
>> > may be high granularity. The user may want to do deeper diff analysis
>> > for some cache or lock issue. The "symoff" key can let the user sort
>> > differential profile by ips. This feature should only work when the
>> > perf.data comes from same binary.
>> 
>> I think the symoff sort key now works well for different (i.e. modified)
>> binaries too.
>
> For different binaries, the function may be changed. So the offset may
> point to different code. 
> What about this?
> "This feature should work when the perf.data comes from
> either same binary or same function of different binary."
> Or just simply remove this sentence.

I'd like to remove it. :)

>
>> 
>> >
>> >  -s::
>> >  --sort=::
>> > -  Sort by key(s): pid, comm, dso, symbol, cpu, parent, srcline.
>> > -  Please see description of --sort in the perf-report man page.
>> > +  Sort by key(s): pid, comm, dso, symbol, cpu, parent, srcline, symoff.
>> > +
>> > +  - symoff: exact symbol +  offset address executed at the time of
>> sample.
>> > +  (for same binary compare)
>> 
>> Ditto.  And symoff is not only for perf diff, but it should work for normal
>> perf report also.  So you'd better move the description to perf report man
>> page IMHO.
>
> OK, I will do it, and also remove "(for same binary compare)"

Thanks!

>
>> 
>> 
>> > +
>> > +  For other keys, please see description of --sort in the perf-report
>> man page.
>> >
>> >  -t::
>> >  --field-separator=::
>> > diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
>> > index 1ce425d..03a4001 100644
>> > --- a/tools/perf/builtin-diff.c
>> > +++ b/tools/perf/builtin-diff.c
>> > @@ -744,7 +744,7 @@ static const struct option options[] = {
>> >    OPT_STRING('S', "symbols", &symbol_conf.sym_list_str,
>> "symbol[,symbol...]",
>> >               "only consider these symbols"),
>> >    OPT_STRING('s', "sort", &sort_order, "key[,key2...]",
>> > -             "sort by key(s): pid, comm, dso, symbol, parent, cpu,
>> srcline, ..."
>> > +             "sort by key(s): pid, comm, dso, symbol, parent, cpu,
>> srcline, symoff, ..."
>> >               " Please refer the man page for the complete list."),
>> >    OPT_STRING('t', "field-separator", &symbol_conf.field_sep,
>> "separator",
>> >               "separator for columns, no spaces will be added between
>> "
>> > diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c index
>> > 6e88b9e..3d8a71b 100644
>> > --- a/tools/perf/util/hist.c
>> > +++ b/tools/perf/util/hist.c
>> > @@ -67,13 +67,14 @@ void hists__calc_col_len(struct hists *hists, struct
>> hist_entry *h)
>> >            symlen = h->ms.sym->namelen + 4;
>> >            if (verbose)
>> >                    symlen += BITS_PER_LONG / 4 + 2 + 3;
>> > -          hists__new_col_len(hists, HISTC_SYMBOL, symlen);
>> >    } else {
>> >            symlen = unresolved_col_width + 4 + 2;
>> > -          hists__new_col_len(hists, HISTC_SYMBOL, symlen);
>> >            hists__set_unres_dso_col_len(hists, HISTC_DSO);
>> >    }
>> >
>> > +  hists__new_col_len(hists, HISTC_SYMBOL, symlen);
>> > +  hists__new_col_len(hists, HISTC_SYMOFF, symlen);
>> 
>> SYMOFF will need larger length at least 6 (for "+0xYYY").  Idealy 3 + symbol
>> size in hexdigit?
>> 
>
> We also need to handle the case which doesn't have symbol available.
> What about this?

I'm fine with it (but I believe you'll fix the indentation).

Thanks,
Namhyung

>         /*
> +      * +6 accounts for '"+0xYYY ' symoff info
>          * +4 accounts for '[x] ' priv level info
>          * +2 accounts for 0x prefix on raw addresses
>          * +3 accounts for ' y ' symtab origin info
>          */   
>                  if (h->ms.sym) {
>               symlen = h->ms.sym->namelen + 4;
>               if (verbose)
>                       symlen += BITS_PER_LONG / 4 + 2 + 3;
>               hists__new_col_len(hists, HISTC_SYMBOL, symlen);
>
> +                              symlen = h->ms.sym->namelen + 6
> +                     hists__new_col_len(hists, HISTC_SYMOFF, symlen);
>       } else {
>               symlen = unresolved_col_width + 4 + 2;
>               hists__new_col_len(hists, HISTC_SYMBOL, symlen);
>               hists__set_unres_dso_col_len(hists, HISTC_DSO);
> +                             symlen = unresolved_col_width + 2
> +                             hists__new_col_len(hists, HISTC_SYMOFF, symlen);
>       }
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to