Messages in this thread | | | Date | Mon, 04 Apr 2011 19:06:18 +0900 | From | Akihiro Nagai <> | Subject | Re: [PATCH -tip v3 0/6] perf: Introduce branch sub commands |
| |
(2011/04/01 23:43), Frederic Weisbecker wrote: > On Thu, Mar 24, 2011 at 08:31:37PM +0900, Akihiro Nagai wrote: >> Hi, >> >> This patch series provides the commands 'perf branch record' and 'perf branch trace' >> version 3. These commands record and analyze a BTS (Branch Trace Store) log. >> And, they provide the interface to use BTS log for application developers. >> >> BTS is a facility of Intel x86 processors, which records the address of >> 'branch to/from' on every branch/jump instruction and interrupt. >> This facility is very useful for developers to test their software, >> for example, coverage test, execution path analysis, dynamic step count ...etc. >> These test tools have a big advantage, which user doesn't have to modify target >> executable binaries, because the BTS is a hardware feauture. >> >> But, there are few applications using BTS. Reasons I guess are ... >> - Few people know what BTS is. >> - Few people know how to use BTS on Linux box. >> - It's hard to analyze the BTS log because it includes just a series of addresses. >> >> So, I want to provide a user-friendly interface to BTS for application developers. >> >> >> About new sub commands >> ======================== >> 'perf branch record' provides an easy way to record BTS log. >> Usage is 'perf branch record<command>'. This command is just an alias to >> 'perf record -e branches:u -c 1<command>'. But, new one is more simple and >> more intuitive. >> >> 'perf branch trace' can parse and analyze recorded BTS log and print various >> information of execution path. This command can show address, pid, command name, >> function+offset, file path of elf. >> You can choose the printed information with option. >> >> Example: 'perf branch trace' >> function+offset >> irq_return+0x0 => _start+0x0 >> irq_return+0x0 => _start+0x0 >> _start+0x3 => _dl_start+0x0 >> irq_return+0x0 => _dl_start+0x0 >> irq_return+0x0 => _dl_start+0x26 >> irq_return+0x0 => _dl_start+0x2d >> _dl_start+0x71 => _dl_start+0x93 >> _dl_start+0x97 => _dl_start+0x78 >> ... >> >> This is the default behavior of 'perf branch trace'. It prints function+offset. >> >> >> Example2: 'perf branch -cas trace' >> command address function+offset >> ls 0xffffffff8146fe0e irq_return+0x0 => ls 0x0000003806200b20 _start+0x0 > > You probably want to display the comm (and/or the pid/tid) only once. Those are not > going to change between the source and destination. Exactly, perf_sample has only one pid/tid field. So, pid/tid and command don't change between source and destination. I'll remove desitination's pid/tid and command fields. Thank you.
| |