From: Akihiro Nagai <akihiro.nagai.hw@hitachi.com>
To: David Ahern <dsahern@gmail.com>
Cc: Arnaldo Carvalho de Melo <acme@infradead.org>,
Ingo Molnar <mingo@elte.hu>,
Peter Zijlstra <peterz@infradead.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
linux-kernel@vger.kernel.org,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
2nddept-manager@sdl.hitachi.co.jp,
Paul Mackerras <paulus@samba.org>
Subject: Re: [PATCH -tip v3 3/6] perf branch trace: print pid and command
Date: Mon, 28 Mar 2011 19:34:56 +0900 [thread overview]
Message-ID: <4D906450.1040809@hitachi.com> (raw)
In-Reply-To: <4D8CAE74.9080805@gmail.com>
(2011/03/26 0:02), David Ahern wrote:
> On 03/25/11 04:14, Akihiro Nagai wrote:
>>> On 03/24/11 05:32, Akihiro Nagai wrote:
>>>> Provide the function to print pid and command name to
>>>> 'perf branch trace'. Users can select items to print with options.
>>>> For example,
>>>> 'perf branch -p trace' prints only pid,
>>>> 'perf branch -ac trace' prints address and comamnd name.
>>>> 'perf branch trace' prints only address (default)
>>>>
>>>> This is output sample (perf branch -ac trace):
>>>> command address
>>>> ls 0xffffffff8146fe0e => ls 0x0000003806200b20
>>>> ls 0xffffffff8146fe0e => ls 0x0000003806200b20
>>>> ls 0x0000003806200b23 => ls 0x0000003806204910
>>>> ls 0xffffffff8146fe0e => ls 0x0000003806204910
>>>> ls 0xffffffff8146fe0e => ls 0x0000003806204936
>>>> ls 0xffffffff8146fe0e => ls 0x000000380620493d
>>>> ls 0x0000003806204981 => ls 0x00000038062049a3
>>>> ls 0x00000038062049a7 => ls 0x0000003806204988
>>>
>>> This can be easily added to perf-script. e.g,
>>>
>>> perf record -e branches:u -c 1 -d -- ls /tmp
>>>
>>> perf script -i /tmp/perf.data -f hw:comm,pid,event,sym,addr
>>>
>>> ...
>>> ls 8150 branches: 0x39d30144d0 ffffffff8146a48e ()
>>> ls 8150 branches: 0x39d3014507 ffffffff8146a48e ()
>>> ls 8150 branches: 0x39d3014510 14518 _dl_sysdep_start
>>> (/lib64/ld-2.13.so)
>>> ...
>>> ls 8150 branches: 0x39d3015250 1833 process_envvars
>>> (/lib64/ld-2.13.so)
>>> ls 8150 branches: 0x39d3015260 1526f _dl_next_ld_env_entry
>>> (/lib64/ld-2.13.so)
>>> ls 8150 branches: 0x39d3015260 1526f _dl_next_ld_env_entry
>>> (/lib64/ld-2.13.so)
>> It seems to analyze only 'branch from' address and,
>> print 'branch to' address just in hex.
>> I would like to analyze both of addresses branch from/to.
>
> from is sample->ip? to is sample->addr? In the above example
> 0x39d3015260 is the value from sample->addr, 1526f is sample->ip which
> resolves to _dl_next_ld_env_entry from /lib64/ld-2.13.so.
Yes.
In this example, resolved address is only sample->ip (branch from).
We need the resolved address of sample->addr (branch to) too, because
both of them are addresses of execution code.
For example, we need following output.
...
ls 0x00000038062152a9 _dl_sysdep_start+0x189 /lib64/ld-2.12.90.so => ls 0x00000038062020e0 dl_main+0x0 /lib64/ld-2.12.90.so
ls 0xffffffff814547d2 irq_return+0x0 /lib/modules/2.6.38-rc8-tip+/build/vmlinux => ls 0x00000038062020e0 dl_main+0x0 /lib64/ld-2.12.90.so
ls 0x0000003806202155 dl_main+0x75 /lib64/ld-2.12.90.so => ls 0x00000038062017d0 process_envvars+0x0 /lib64/ld-2.12.90.so
ls 0xffffffff814547d2 irq_return+0x0 /lib/modules/2.6.38-rc8-tip+/build/vmlinux => ls 0x00000038062017d0 process_envvars+0x0 /lib64/ld-2.12.90.so
ls 0x0000003806201833 process_envvars+0x63 /lib64/ld-2.12.90.so => ls 0x0000003806215ec0 _dl_next_ld_env_entry+0x0 /lib64/ld-2.12.90.so
ls 0x0000003806215ed3 _dl_next_ld_env_entry+0x13 /lib64/ld-2.12.90.so => ls 0x0000003806215ee5 _dl_next_ld_env_entry+0x25 /lib64/ld-2.12.90.so
ls 0x0000003806215ee9 _dl_next_ld_env_entry+0x29 /lib64/ld-2.12.90.so => ls 0x0000003806215ed5 _dl_next_ld_env_entry+0x15 /lib64/ld-2.12.90.so
...
This example's left hand side which is separated by "=>" is a result of resolving sample->ip and,
right hand side is sample->addr's.
>
>>
>> Can perf-script do it by writing scripts?
>
> If you are pulling the data from a perf sample then you can accomplish
> the same goal within perf-script.
It seems that perf-script doesn't have the interface of converting
sample->addr to symbol, pid, comm and others. Of course, we can add
the interface to perf-script, and it could be another way to implement
this function using perf-script.
However, since BTS output usually becomes huge, it would be very slow
to convert all the data by python/perl.
>
>
> David
next prev parent reply other threads:[~2011-03-28 10:35 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-24 11:31 [PATCH -tip v3 0/6] perf: Introduce branch sub commands Akihiro Nagai
2011-03-24 11:31 ` [PATCH -tip v3 1/6] perf: new subcommand perf branch record Akihiro Nagai
2011-03-24 11:32 ` [PATCH -tip v3 2/6] perf branch: Introduce new sub command 'perf branch trace' Akihiro Nagai
2011-03-24 11:32 ` [PATCH -tip v3 3/6] perf branch trace: print pid and command Akihiro Nagai
2011-03-24 17:05 ` David Ahern
2011-03-25 10:14 ` Akihiro Nagai
2011-03-25 15:02 ` David Ahern
2011-03-28 10:34 ` Akihiro Nagai [this message]
2011-03-28 14:31 ` David Ahern
2011-04-01 15:13 ` Frederic Weisbecker
2011-04-01 15:15 ` Peter Zijlstra
2011-04-01 15:24 ` Arnaldo Carvalho de Melo
2011-04-01 17:11 ` David Ahern
2011-04-01 20:20 ` Peter Zijlstra
2011-04-06 12:15 ` Frederic Weisbecker
2011-04-06 14:09 ` Arnaldo Carvalho de Melo
2011-04-06 14:15 ` Peter Zijlstra
2011-04-06 14:30 ` Frederic Weisbecker
2011-04-06 14:34 ` David Ahern
2011-04-06 14:43 ` Frederic Weisbecker
2011-04-06 14:42 ` Frederic Weisbecker
2011-04-06 14:55 ` Frederic Weisbecker
2011-04-06 17:18 ` Arnaldo Carvalho de Melo
2011-04-04 10:00 ` Akihiro Nagai
2011-04-06 12:52 ` Frederic Weisbecker
2011-04-11 4:54 ` Akihiro Nagai
2011-03-24 11:32 ` [PATCH -tip v3 4/6] perf branch trace: print file path of the executed elf Akihiro Nagai
2011-03-24 11:32 ` [PATCH -tip v3 5/6] perf branch trace: print function+offset Akihiro Nagai
2011-03-24 11:32 ` [PATCH -tip v3 6/6] perf branch trace: add print all option Akihiro Nagai
2011-03-30 14:46 ` [PATCH -tip v3 0/6] perf: Introduce branch sub commands Frederic Weisbecker
2011-04-01 10:57 ` Akihiro Nagai
2011-04-01 12:51 ` Frederic Weisbecker
2011-04-01 14:43 ` Frederic Weisbecker
2011-04-04 10:06 ` Akihiro Nagai
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=4D906450.1040809@hitachi.com \
--to=akihiro.nagai.hw@hitachi.com \
--cc=2nddept-manager@sdl.hitachi.co.jp \
--cc=acme@infradead.org \
--cc=dsahern@gmail.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
--cc=peterz@infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.