• Kan Liang's avatar
    perf parse-events: Handle uncore event aliases in small groups properly · 369b2308
    Kan Liang authored
    Perf stat doesn't count the uncore event aliases from the same uncore
    block in a group, for example:
    
      perf stat -e '{unc_m_cas_count.all,unc_m_clockticks}' -a -I 1000
      #           time             counts unit events
           1.000447342      <not counted>      unc_m_cas_count.all
           1.000447342      <not counted>      unc_m_clockticks
           2.000740654      <not counted>      unc_m_cas_count.all
           2.000740654      <not counted>      unc_m_clockticks
    
    The output is very misleading. It gives a wrong impression that the
    uncore event doesn't work.
    
    An uncore block could be composed by several PMUs. An uncore event alias
    is a joint name which means the same event runs on all PMUs of a block.
    Perf doesn't support mixed events from different PMUs in the same group.
    It is wrong to put uncore event aliases in a big group.
    
    The right way is to split the big group into multiple small groups which
    only include the events from the same PMU.
    
    Only uncore event aliases from the same uncore block should be specially
    handled here. It doesn't make sense to mix the uncore events with other
    uncore events from different blocks or even core events in a group.
    
    With the patch:
      #           time             counts unit events
         1.001557653            140,833      unc_m_cas_count.all
         1.001557653      1,330,231,332      unc_m_clockticks
         2.002709483             85,007      unc_m_cas_count.all
         2.002709483      1,429,494,563      unc_m_clockticks
    Reported-by: default avatarAndi Kleen <ak@linux.intel.com>
    Signed-off-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Agustin Vega-Frias <agustinv@codeaurora.org>
    Cc: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Shaokun Zhang <zhangshaokun@hisilicon.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Link: http://lkml.kernel.org/r/1525727623-19768-1-git-send-email-kan.liang@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    369b2308
evsel.h 13.5 KB