From: Akihiro Nagai <akihiro.nagai.hw@hitachi.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: linux-kernel@vger.kernel.org,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
Paul Mackerras <paulus@samba.org>, Ingo Molnar <mingo@elte.hu>,
Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Subject: Re: [PATCH -tip 6/7] perf bts trace: print function+offset
Date: Mon, 06 Dec 2010 19:08:24 +0900 [thread overview]
Message-ID: <4CFCB618.8080004@hitachi.com> (raw)
In-Reply-To: <1291381258.32004.2083.camel@laptop>
(2010/12/03 22:00), Peter Zijlstra wrote:
> On Fri, 2010-12-03 at 13:00 +0900, Akihiro Nagai wrote:
>> Provide the function to print function+offset.
>> And, set it as the default behavior of 'perf bts trace'.
>> To use this function, users can also specify the option '-s' or '--symbol'.
>>
>> Example: 'perf bts -as trace'
>> This command prints address and function+offset.
>>
>> Output sample:
>> address function+offset
>> 0xffffffff8146fe0e irq_return+0x0 => 0x00007fd4038e3b20 _start+0x0
>> ...
>> 0x000000380661ee79 __libc_start_main+0xf9 => 0x00000000004035c3 main+0x0
>> 0xffffffff8146ef4e irq_return+0x0 => 0x00000000004035c3 main+0x0
>> 0x00000000004035e8 main+0x25 => 0x000000000040bca0 set_program_name+0x0
>> 0xffffffff8146ef4e irq_return+0x0 => 0x000000000040bca0 set_program_name+0x0
>> 0x000000000040bcae set_program_name+0xe => 0x00000000004023d0 strrchr@plt+0x0
>> 0x00000000004023d0 strrchr@plt+0x0 => 0x00000000004023d6 strrchr@plt+0x6
>> ...
>> 0x0000000000403e0c main+0x849 => 0x00000000004021f0 exit@plt+0x0
>> 0x00000000004021f0 exit@plt+0x0 => 0x00000000004021f6 exit@plt+0x6
>> 0x00000000004021fb exit@plt+0xb => 0x00000000004020d0 _init+0x18
>> 0x00000000004020d6 _init+0x1e => 0x00000038062149d0 _dl_runtime_resolve+0x0
>
>
> What would be very nice output is something like a source-code browser
> (tig might have something worth borrowing) and annotating the output
> using the bts output.
>
> You could for example darken the code that didn't get any coverage, and
> print a percentage for each conditional statement.
>
> That way you can easily see how your code is traversed.
We have developed the coverage test tool and execution path analyzer using BTS
called "Btrax". It can show the executed/unexecuted source codes with color.
Please refer this slide about details of Btrax.
http://lca2009.linux.org.au/slides/52.pdf
The purpose of 'perf bts' is to implement similar functions to Btrax.
And also, I'll try to reduce memory copies from kernel space to user,
because perf copies 3 times. But btrax does just one copy.
Please see the following benchmark results.
Test program: compile with -O0 option this source code
int main(void)
{
int i;
while(i++ < 100000000);
return 0;
}
Execution Results:
Native:
# time ./a.out
real 0m0.349s
user 0m0.346s
sys 0m0.002s
Btrax:
(enabling BTS_OFF_OS flag for this benchmark)
(kernel 2.6.30 on RHEL 5.4)
# bt_collect_log -d log -c ./a.out
real 1m19.950s
user 0m14.783s
sys 0m40.655s
(trace data size: 1,537,307,064 bytes)
perf:
# time perf bts record ./a.out
Processed 0 events and LOST 5002!
Check IO/CPU overload!
# perf record: Captured and wrote 2704.231 MB perf.data (~118149662 samples)
real 2m1.885s
user 0m7.184s
sys 0m19.194s
Bench Mark Enviroment:
Native and perf: latest -tip kernel on Fedora14
Btrax: vanilla 2.6.30 on RHEL5.4
Core2Duo E6550 @2.33GHz
Mem DDR2 4GB
best regards,
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
next prev parent reply other threads:[~2010-12-06 10:10 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-03 3:58 [PATCH -tip 0/7] perf: Introduce bts sub commands Akihiro Nagai
2010-12-03 3:58 ` [PATCH -tip 1/7] perf: add OPT_CALLBACK_DEFAULT_NOOPT Akihiro Nagai
2010-12-06 2:23 ` Masami Hiramatsu
2010-12-07 6:56 ` [tip:perf/core] perf options: " tip-bot for Akihiro Nagai
2010-12-03 3:59 ` [PATCH -tip 2/7] perf: Introduce perf sub command 'bts record' Akihiro Nagai
2010-12-06 2:26 ` Masami Hiramatsu
2010-12-03 3:59 ` [PATCH -tip 3/7] perf bts: Introduce new sub command 'perf bts trace' Akihiro Nagai
2010-12-06 3:10 ` Masami Hiramatsu
2010-12-03 3:59 ` [PATCH -tip 4/7] perf bts trace: print pid and command Akihiro Nagai
2010-12-06 3:16 ` Masami Hiramatsu
2010-12-03 3:59 ` [PATCH -tip 5/7] perf bts trace: print file path of the executed elf Akihiro Nagai
2010-12-06 3:17 ` Masami Hiramatsu
2010-12-03 4:00 ` [PATCH -tip 6/7] perf bts trace: print function+offset Akihiro Nagai
2010-12-03 13:00 ` Peter Zijlstra
2010-12-06 10:08 ` Akihiro Nagai [this message]
2010-12-06 2:42 ` Frederic Weisbecker
2010-12-06 10:28 ` Akihiro Nagai
2010-12-06 3:20 ` Masami Hiramatsu
2010-12-03 4:00 ` [PATCH -tip 7/7] perf bts trace: add print all option Akihiro Nagai
2010-12-06 3:20 ` Masami Hiramatsu
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=4CFCB618.8080004@hitachi.com \
--to=akihiro.nagai.hw@hitachi.com \
--cc=acme@ghostprotocols.net \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox