mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Aaron Tomlin <atomlin@redhat.com>
Cc: josla@redhat.com, mingo@redhat.com,
	alexander.shishkin@linux.intel.com, namhyung@kernel.org,
	linux-kernel@vger.kernel.org,
	Milian Wolff <milian.wolff@kdab.com>
Subject: Re: [PATCH/RFC] perf report: Add option to change offset format when address is specified as a sort_key
Date: Tue, 26 Dec 2017 11:51:45 -0300	[thread overview]
Message-ID: <20171226145145.GU21971@kernel.org> (raw)
In-Reply-To: <20171215153510.14499-1-atomlin@redhat.com>

Em Fri, Dec 15, 2017 at 03:35:10PM +0000, Aaron Tomlin escreveu:
> With --call-graph option, a user can choose to display call chains with a
> specific sort_key. The sort_key can be either: function, address or srcline.
> By default, when the address is specified as the sort_key, the offset (i.e.
> symbol + offset) is provided in decimal (base 10) form.

> This is because in __get_srcline() we use PRIu64 to display the offset.
> This may or may not be desirable.
> 
> This patch adds a new option --hex, to change the offset format to
> hexidecimal. Note, this can only be used with the -g, --call-graph option
> when address is specified as a sort_key.  When this option is not
> specified, the default behavior is used, which is to display the offset
> in decimal form.
> 
> Before:
> 
> $ ./perf report -n --fields=overhead,sample,period,pid,symbol --stdio \
> > -g graph,callee,address --percent-limit 10 --no-children
> [ ... ]
>     10.87%             1     506940477     15:migration/3   [k] _spin_trylock
>             |
>             ---_spin_trylock +13
>                double_lock_balance +48
>                schedule +2007
>                migration_thread +613
>                kthread +158
>                child_rip +10

Humm, trying to reproduce this with the command line you provided above,
in your 'Before:' case:

# perf record -F 10000 -g --pid 10,15,21,27
# perf report -n --fields=overhead,sample,period,pid,symbol --stdio -g graph,callee,address --no-children

     7.31%             1        205216       10:migration/0  [k] _raw_spin_lock
            |
            ---_raw_spin_lock atomic.h:187
               scheduler_tick sched.h:935
               update_process_times timer.c:1637
               tick_sched_handle tick-sched.c:163
               tick_sched_timer tick-sched.c:1171
               __hrtimer_run_queues hrtimer.c:1211
               hrtimer_interrupt hrtimer.c:469
               smp_apic_timer_interrupt apic.c:1025
               apic_timer_interrupt entry_64.S:795
               finish_task_switch current.h:15
               __sched_text_start core.c:2802
               schedule current.h:15
               smpboot_thread_fn smpboot.c:160
               kthread kthread.c:238
               ret_from_fork entry_64.S:447

[root@jouet ~]# perf --version
perf version 4.15.rc4.g6c7919a

This is with is in my perf/core branch, but I bet you'll get the same
result with 4.15-rc4.

Humm, so this is because you're not using a vmlinux file, then the
srcline gets resolved and get_srcline() returns before getting to the
fallback where offsets are shown, if I do:

[root@jouet ~]# mv /lib/modules/4.15.0-rc3+/build/vmlinux /lib/modules/4.15.0-rc3+/build/vmlinux.OFF

and remove the cached entry in my ~/.debug/ build-id cache, I get to:

# symbol: _raw_spin_lock
#
# Total Lost Samples: 0
#
# Samples: 54  of event 'cycles:ppp'
# Event count (approx.): 2805651
#
# Overhead       Samples        Period      Pid:Command      Source:Line                        
# ........  ............  ............  ...................  ...................................
#
     7.31%             1        205216       10:migration/0  _raw_spin_lock+18446603336221184012
            |
            ---_raw_spin_lock +18446603336221184012
               scheduler_tick +18446603336221184060
               update_process_times +18446603336221184064
               tick_sched_handle +18446603336221184034
               tick_sched_timer +18446603336221184052
               __hrtimer_run_queues +18446603336221184214
               hrtimer_interrupt +18446603336221184166
               smp_apic_timer_interrupt +18446603336221184086
               __irqentry_text_start +18446603336221184150
               finish_task_switch +18446603336221184123
               __sched_text_start +18446603336221184577
               schedule +18446603336221184040
               smpboot_thread_fn +18446603336221184323
               kthread +18446603336221184273
               ret_from_fork +18446603336221184031



#
[root@jouet ~]#

Which looks buggy... bisecting...

- Arnaldo

      parent reply	other threads:[~2017-12-26 14:51 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-15 15:35 Aaron Tomlin
2017-12-22 23:59 ` Jiri Olsa
2017-12-24 18:23   ` Aaron Tomlin
2017-12-25 21:46     ` Jiri Olsa
2017-12-26 14:51 ` Arnaldo Carvalho de Melo [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=20171226145145.GU21971@kernel.org \
    --to=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=atomlin@redhat.com \
    --cc=josla@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=milian.wolff@kdab.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    /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

Powered by JetHome