lkml.org 
[lkml]   [2022]   [Jan]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v4 25/48] perf stat-display: Avoid use of core for CPU.
    From
    Correct use of cpumap index in print_no_aggr_metric.

    Signed-off-by: Ian Rogers <irogers@google.com>
    ---
    tools/perf/util/stat-display.c | 45 +++++++++++++++++-----------------
    1 file changed, 22 insertions(+), 23 deletions(-)

    diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
    index 870b1db71fbc..f48d1678861c 100644
    --- a/tools/perf/util/stat-display.c
    +++ b/tools/perf/util/stat-display.c
    @@ -120,11 +120,10 @@ static void aggr_printout(struct perf_stat_config *config,
    id.die,
    config->csv_output ? 0 : -3,
    id.core, config->csv_sep);
    - } else if (id.core > -1) {
    + } else if (id.cpu > -1) {
    fprintf(config->output, "CPU%*d%s",
    config->csv_output ? 0 : -7,
    - evsel__cpus(evsel)->map[id.core],
    - config->csv_sep);
    + id.cpu, config->csv_sep);
    }
    break;
    case AGGR_THREAD:
    @@ -334,7 +333,7 @@ static int first_shadow_cpu(struct perf_stat_config *config,
    int cpu, idx;

    if (config->aggr_mode == AGGR_NONE)
    - return id->core;
    + return id->cpu;

    if (!config->aggr_get_id)
    return 0;
    @@ -697,10 +696,9 @@ static void print_counter_aggrdata(struct perf_stat_config *config,
    fprintf(output, "%s", prefix);

    uval = val * counter->scale;
    - if (cpu != -1) {
    - id = aggr_cpu_id__empty();
    - id.core = cpu;
    - }
    + if (cpu != -1)
    + id = aggr_cpu_id__cpu(cpu, /*data=*/NULL);
    +
    printout(config, id, nr, counter, uval,
    prefix, run, ena, 1.0, &rt_stat);
    if (!metric_only)
    @@ -911,8 +909,7 @@ static void print_counter(struct perf_stat_config *config,
    fprintf(output, "%s", prefix);

    uval = val * counter->scale;
    - id = aggr_cpu_id__empty();
    - id.core = cpu;
    + id = aggr_cpu_id__cpu(cpu, /*data=*/NULL);
    printout(config, id, 0, counter, uval, prefix,
    run, ena, 1.0, &rt_stat);

    @@ -924,29 +921,31 @@ static void print_no_aggr_metric(struct perf_stat_config *config,
    struct evlist *evlist,
    char *prefix)
    {
    - int cpu;
    - int nrcpus = 0;
    - struct evsel *counter;
    - u64 ena, run, val;
    - double uval;
    - struct aggr_cpu_id id;
    + int all_idx, cpu;

    - nrcpus = evlist->core.cpus->nr;
    - for (cpu = 0; cpu < nrcpus; cpu++) {
    + perf_cpu_map__for_each_cpu(cpu, all_idx, evlist->core.cpus) {
    + struct evsel *counter;
    bool first = true;

    if (prefix)
    fputs(prefix, config->output);
    evlist__for_each_entry(evlist, counter) {
    - id = aggr_cpu_id__empty();
    - id.core = cpu;
    + u64 ena, run, val;
    + double uval;
    + struct aggr_cpu_id id;
    + int counter_idx = perf_cpu_map__idx(evsel__cpus(counter), cpu);
    +
    + if (counter_idx < 0)
    + continue;
    +
    + id = aggr_cpu_id__cpu(cpu, /*data=*/NULL);
    if (first) {
    aggr_printout(config, counter, id, 0);
    first = false;
    }
    - val = perf_counts(counter->counts, cpu, 0)->val;
    - ena = perf_counts(counter->counts, cpu, 0)->ena;
    - run = perf_counts(counter->counts, cpu, 0)->run;
    + val = perf_counts(counter->counts, counter_idx, 0)->val;
    + ena = perf_counts(counter->counts, counter_idx, 0)->ena;
    + run = perf_counts(counter->counts, counter_idx, 0)->run;

    uval = val * counter->scale;
    printout(config, id, 0, counter, uval, prefix,
    --
    2.34.1.448.ga2b2bfdf31-goog
    \
     
     \ /
      Last update: 2022-01-05 07:16    [W:4.080 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site