On 05/27/2015 10:46 AM, Martin Liška wrote:
On 05/26/2015 07:03 PM, Andi Kleen wrote:
Anyway, attached patch is capable of displaying milliseconds approximation for 
each instruction.

You realize that the events perf is not counting do not directly map to
wall time? Even if you count cycles, the cycles are either stopping in idle
or changing unit as the CPU's frequencies change. For other events the
relationship is even more remote, think what happens when counting cache or
TLB misses.

Also even if it was mapping to time somehow, it's just a hit, not a
duration, so it cannot say how long a individual instruction took.

So you cannot map a sample event to time.

To do what you want you would need to use something like processor
trace, which can do exact accounting.

I think the only thing that makes sense is to account it relative to
the event counts.

-Andi


Hello Andi.

I realize all aspects and capabilities of perf infrastructure. Even though
these numbers are not precise, I helped me a lot with debugging of a benchmark
which heavily utilizes a single CPU and runs in magnitude of seconds.

Ok, so let's convert the patch to feature that we can map an instruction
to a percentage number of events (cycles) it takes.

If I understand correctly, is it just about division of the number of events
related to an instruction and total number of events?

Thanks,
Martin

--
To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Hi.

Sample output to verify that we have the same idea in mind:

$ perf annotate --show-total-period

 Disassembly of section .text:
         :
         :      0000000000038890 <random_r>:
         :      __random_r():
    1695 :        38890:       test   %rdi,%rdi
       0 :        38893:       je     38918 <random_r+0x88>
       1 :        38899:       test   %rsi,%rsi
       0 :        3889c:       je     38918 <random_r+0x88>
       9 :        3889e:       mov    0x18(%rdi),%eax
    1833 :        388a1:       mov    0x10(%rdi),%rdx
       2 :        388a5:       test   %eax,%eax
       0 :        388a7:       je     388f8 <random_r+0x68>
     168 :        388a9:       mov    (%rdi),%rcx
       8 :        388ac:       mov    0x8(%rdi),%r8
    1325 :        388b0:       mov    0x28(%rdi),%r9

Where:
$ perf report | head

# To display the perf.data header info, please use --header/--header-only 
options.
#
# Samples: 44K of event 'cycles'
# Event count (approx.): 42988831618

Thank for ideas,
Martin

--
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