lkml.org 
[lkml]   [2011]   [Aug]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch] perf: ARMv7 wrong "branches" generalized instruction
    On Wed, 10 Aug 2011, Will Deacon wrote:

    > > It turns out the branches event used (ARMV7_PERFCTR_PC_WRITE) only seems
    > > to count taken branches.
    >
    > It also counts exceptions and instructions that write to the PC.

    are those more common than not-taken branches? I'd think branch predictor
    statistics will be a bit off if only taken instructions are measured.

    > > ARMV7_PERFCTR_PC_IMM_BRANCH seems to do a better job of counting both
    > > taken and not-taken. So I've attached a patch to change the definition
    > > for Cotex A9.
    >
    > Well, it also only considers immediate branches so whilst it might
    > satisy your test, I think that overall it's a less meaningful number.

    I guess there isn't more info available about which branches exactly are
    counted by all the events? I've gone through the trouble of writing such
    tests to find out experimentally what various counters count for x86, it
    would be sad to have to do it again for ARM.

    > (b) start replacing our generalised events with HW_OP_UNSUPPORTED and force
    > the user to use raw events. I agree this isn't very friendly, but it's
    > better than giving them crazy results [for example, we currently report
    > more cache misses than cache references on A9 iirc].
    >
    > Personally, I'm favour of (b) and getting userspace to provide the user with
    > a CPU-specific event listing and then translate this to raw events using
    > something like libpfm.

    I agree 100%, but it's an unpopular opinion on linux-kernel. (Note that
    I'm the one who contributed ARM Cortex A8/A9 support to both libpfm4 and
    PAPI).

    Since the generalized events are there and ABI though, people are going to
    use them. That's why I've been writing tests that check them to see
    exactly what they are measuring.

    It's still an important issue to know what "branches" measures, just it
    probably shouldn't be a kernel issue like it's become.

    Vince
    vweaver1@eecs.utk.edu



    \
     
     \ /
      Last update: 2011-08-10 21:03    [W:2.443 / U:0.396 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site