lkml.org 
[lkml]   [2015]   [Oct]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.19.y-ckt 134/156] perf stat: Get correct cpu id for print_aggr
    Date
    3.19.8-ckt8 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Kan Liang <kan.liang@intel.com>

    commit 601083cffb7cabdcc55b8195d732f0f7028570fa upstream.

    print_aggr() fails to print per-core/per-socket statistics after commit
    582ec0829b3d ("perf stat: Fix per-socket output bug for uncore events")
    if events have differnt cpus. Because in print_aggr(), aggr_get_id needs
    index (not cpu id) to find core/pkg id. Also, evsel cpu maps should be
    used to get aggregated id.

    Here is an example:

    Counting events cycles,uncore_imc_0/cas_count_read/. (Uncore event has
    cpumask 0,18)

    $ perf stat -e cycles,uncore_imc_0/cas_count_read/ -C0,18 --per-core sleep 2

    Without this patch, it failes to get CPU 18 result.

    Performance counter stats for 'CPU(s) 0,18':

    S0-C0 1 7526851 cycles
    S0-C0 1 1.05 MiB uncore_imc_0/cas_count_read/
    S1-C0 0 <not counted> cycles
    S1-C0 0 <not counted> MiB uncore_imc_0/cas_count_read/

    With this patch, it can get both CPU0 and CPU18 result.

    Performance counter stats for 'CPU(s) 0,18':

    S0-C0 1 6327768 cycles
    S0-C0 1 0.47 MiB uncore_imc_0/cas_count_read/
    S1-C0 1 330228 cycles
    S1-C0 1 0.29 MiB uncore_imc_0/cas_count_read/

    Signed-off-by: Kan Liang <kan.liang@intel.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Acked-by: Stephane Eranian <eranian@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Fixes: 582ec0829b3d ("perf stat: Fix per-socket output bug for uncore events")
    Link: http://lkml.kernel.org/r/1435820925-51091-1-git-send-email-kan.liang@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    tools/perf/builtin-stat.c | 5 ++---
    1 file changed, 2 insertions(+), 3 deletions(-)

    diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
    index 8910863..cf5d882 100644
    --- a/tools/perf/builtin-stat.c
    +++ b/tools/perf/builtin-stat.c
    @@ -1204,7 +1204,7 @@ static void abs_printout(int id, int nr, struct perf_evsel *evsel, double avg)
    static void print_aggr(char *prefix)
    {
    struct perf_evsel *counter;
    - int cpu, cpu2, s, s2, id, nr;
    + int cpu, s, s2, id, nr;
    double uval;
    u64 ena, run, val;

    @@ -1217,8 +1217,7 @@ static void print_aggr(char *prefix)
    val = ena = run = 0;
    nr = 0;
    for (cpu = 0; cpu < perf_evsel__nr_cpus(counter); cpu++) {
    - cpu2 = perf_evsel__cpus(counter)->map[cpu];
    - s2 = aggr_get_id(evsel_list->cpus, cpu2);
    + s2 = aggr_get_id(perf_evsel__cpus(counter), cpu);
    if (s2 != id)
    continue;
    val += counter->counts->cpu[cpu].val;
    --
    1.9.1


    \
     
     \ /
      Last update: 2015-10-21 00:01    [W:4.056 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site