Lines Matching +full:re +full:- +full:config
1 // SPDX-License-Identifier: GPL-2.0
60 if (evsel->core.attr.exclude_kernel) in evsel_context()
62 if (evsel->core.attr.exclude_user) in evsel_context()
64 if (evsel->core.attr.exclude_hv) in evsel_context()
66 if (evsel->core.attr.exclude_host) in evsel_context()
68 if (evsel->core.attr.exclude_idle) in evsel_context()
156 evlist__for_each_entry(evsel->evlist, cur) { in find_stat()
164 if (evsel->core.leader->nr_members > 1 && in find_stat()
165 evsel->core.leader != cur->core.leader) in find_stat()
170 /* Ignore if not the cgroup we're looking for. */ in find_stat()
171 if (evsel->cgrp != cur->cgrp) in find_stat()
173 /* Ignore if not the stat we're looking for. */ in find_stat()
179 * ignore if not the PMU we're looking for. in find_stat()
184 aggr = &cur->stats->aggr[aggr_idx]; in find_stat()
186 return aggr->counts.val; in find_stat()
187 return aggr->counts.val * cur->scale; in find_stat()
192 static void print_ratio(struct perf_stat_config *config, in print_ratio() argument
210 out->print_metric(config, out->ctx, thresh, fmt, unit, ratio); in print_ratio()
213 static void print_stalled_cycles_front(struct perf_stat_config *config, in print_stalled_cycles_front() argument
220 print_ratio(config, evsel, aggr_idx, stalled, out, STAT_CYCLES, thresh_ratios, in print_stalled_cycles_front()
224 static void print_stalled_cycles_back(struct perf_stat_config *config, in print_stalled_cycles_back() argument
231 print_ratio(config, evsel, aggr_idx, stalled, out, STAT_CYCLES, thresh_ratios, in print_stalled_cycles_back()
235 static void print_branch_miss(struct perf_stat_config *config, in print_branch_miss() argument
242 print_ratio(config, evsel, aggr_idx, misses, out, STAT_BRANCHES, thresh_ratios, in print_branch_miss()
246 static void print_l1d_miss(struct perf_stat_config *config, in print_l1d_miss() argument
253 print_ratio(config, evsel, aggr_idx, misses, out, STAT_L1_DCACHE, thresh_ratios, in print_l1d_miss()
254 "of all L1-dcache accesses"); in print_l1d_miss()
257 static void print_l1i_miss(struct perf_stat_config *config, in print_l1i_miss() argument
264 print_ratio(config, evsel, aggr_idx, misses, out, STAT_L1_ICACHE, thresh_ratios, in print_l1i_miss()
265 "of all L1-icache accesses"); in print_l1i_miss()
268 static void print_ll_miss(struct perf_stat_config *config, in print_ll_miss() argument
275 print_ratio(config, evsel, aggr_idx, misses, out, STAT_LL_CACHE, thresh_ratios, in print_ll_miss()
276 "of all LL-cache accesses"); in print_ll_miss()
279 static void print_dtlb_miss(struct perf_stat_config *config, in print_dtlb_miss() argument
286 print_ratio(config, evsel, aggr_idx, misses, out, STAT_DTLB_CACHE, thresh_ratios, in print_dtlb_miss()
290 static void print_itlb_miss(struct perf_stat_config *config, in print_itlb_miss() argument
297 print_ratio(config, evsel, aggr_idx, misses, out, STAT_ITLB_CACHE, thresh_ratios, in print_itlb_miss()
301 static void print_cache_miss(struct perf_stat_config *config, in print_cache_miss() argument
308 print_ratio(config, evsel, aggr_idx, misses, out, STAT_CACHE_REFS, thresh_ratios, in print_cache_miss()
312 static void print_instructions(struct perf_stat_config *config, in print_instructions() argument
317 print_metric_t print_metric = out->print_metric; in print_instructions()
318 void *ctxp = out->ctx; in print_instructions()
324 print_metric(config, ctxp, METRIC_THRESHOLD_UNKNOWN, "%7.2f ", in print_instructions()
327 print_metric(config, ctxp, METRIC_THRESHOLD_UNKNOWN, /*fmt=*/NULL, in print_instructions()
331 if (out->new_line) in print_instructions()
332 out->new_line(config, ctxp); in print_instructions()
333 print_metric(config, ctxp, METRIC_THRESHOLD_UNKNOWN, "%7.2f ", in print_instructions()
338 static void print_cycles(struct perf_stat_config *config, in print_cycles() argument
348 out->print_metric(config, out->ctx, METRIC_THRESHOLD_UNKNOWN, "%8.3f", in print_cycles()
351 out->print_metric(config, out->ctx, METRIC_THRESHOLD_UNKNOWN, /*fmt=*/NULL, in print_cycles()
356 static void print_nsecs(struct perf_stat_config *config, in print_nsecs() argument
361 print_metric_t print_metric = out->print_metric; in print_nsecs()
362 void *ctxp = out->ctx; in print_nsecs()
366 print_metric(config, ctxp, METRIC_THRESHOLD_UNKNOWN, "%8.3f", "CPUs utilized", in print_nsecs()
367 nsecs / (wall_time * evsel->scale)); in print_nsecs()
369 print_metric(config, ctxp, METRIC_THRESHOLD_UNKNOWN, /*fmt=*/NULL, in print_nsecs()
379 struct evsel * const *metric_events = mexp->metric_events; in prepare_metric()
380 struct metric_ref *metric_refs = mexp->metric_refs; in prepare_metric()
395 scale = 1e-9; in prepare_metric()
399 scale = 1e-6; in prepare_metric()
403 scale = 1e-6; in prepare_metric()
427 struct perf_stat_evsel *ps = metric_events[i]->stats; in prepare_metric()
431 * If there are multiple uncore PMUs and we're not in prepare_metric()
435 if (evsel && evsel->metric_leader && in prepare_metric()
436 evsel->pmu != evsel->metric_leader->pmu && in prepare_metric()
437 mexp->metric_events[i]->pmu == evsel->metric_leader->pmu) { in prepare_metric()
440 evlist__for_each_entry(evsel->evlist, pos) { in prepare_metric()
441 if (pos->pmu != evsel->pmu) in prepare_metric()
443 if (pos->metric_leader != mexp->metric_events[i]) in prepare_metric()
445 ps = pos->stats; in prepare_metric()
450 aggr = &ps->aggr[aggr_idx]; in prepare_metric()
454 if (!metric_events[i]->supported) { in prepare_metric()
465 val = aggr->counts.val; in prepare_metric()
472 return -ENOMEM; in prepare_metric()
487 static void generic_metric(struct perf_stat_config *config, in generic_metric() argument
493 print_metric_t print_metric = out->print_metric; in generic_metric()
494 const char *metric_name = mexp->metric_name; in generic_metric()
495 const char *metric_expr = mexp->metric_expr; in generic_metric()
496 const char *metric_threshold = mexp->metric_threshold; in generic_metric()
497 const char *metric_unit = mexp->metric_unit; in generic_metric()
498 struct evsel * const *metric_events = mexp->metric_events; in generic_metric()
499 int runtime = mexp->runtime; in generic_metric()
503 void *ctxp = out->ctx; in generic_metric()
510 if (config->user_requested_cpu_list) in generic_metric()
511 pctx->sctx.user_requested_cpu_list = strdup(config->user_requested_cpu_list); in generic_metric()
512 pctx->sctx.runtime = runtime; in generic_metric()
513 pctx->sctx.system_wide = config->system_wide; in generic_metric()
543 print_metric(config, ctxp, thresh, "%8.1f", in generic_metric()
546 print_metric(config, ctxp, thresh, "%8.2f", in generic_metric()
549 out->force_header ? evsel->name : "", in generic_metric()
553 print_metric(config, ctxp, thresh, /*fmt=*/NULL, in generic_metric()
554 out->force_header ? in generic_metric()
555 (metric_name ?: evsel->name) : "", 0); in generic_metric()
558 print_metric(config, ctxp, thresh, /*fmt=*/NULL, in generic_metric()
559 out->force_header ? in generic_metric()
560 (metric_name ?: evsel->name) : "", 0); in generic_metric()
578 if (expr__parse(&ratio, pctx, mexp->metric_expr)) in test_generic_metric()
586 static void perf_stat__print_metricgroup_header(struct perf_stat_config *config, in perf_stat__print_metricgroup_header() argument
599 * e.g.,TopdownL1 on e-core of ADL. in perf_stat__print_metricgroup_header()
605 if (!need_full_name || last_pmu != evsel->pmu) { in perf_stat__print_metricgroup_header()
606 out->print_metricgroup_header(config, ctxp, NULL); in perf_stat__print_metricgroup_header()
611 if (need_full_name && evsel->pmu) in perf_stat__print_metricgroup_header()
612 scnprintf(full_name, sizeof(full_name), "%s (%s)", name, evsel->pmu->name); in perf_stat__print_metricgroup_header()
616 out->print_metricgroup_header(config, ctxp, full_name); in perf_stat__print_metricgroup_header()
619 last_pmu = evsel->pmu; in perf_stat__print_metricgroup_header()
623 * perf_stat__print_shadow_stats_metricgroup - Print out metrics associated with the evsel
624 * For the non-default, all metrics associated
633 void *perf_stat__print_shadow_stats_metricgroup(struct perf_stat_config *config, in perf_stat__print_shadow_stats_metricgroup() argument
643 void *ctxp = out->ctx; in perf_stat__print_shadow_stats_metricgroup()
652 mexp = list_first_entry(&me->head, typeof(*mexp), nd); in perf_stat__print_shadow_stats_metricgroup()
654 list_for_each_entry_from(mexp, &me->head, nd) { in perf_stat__print_shadow_stats_metricgroup()
656 if (!config->metric_only && me->is_default) { in perf_stat__print_shadow_stats_metricgroup()
658 name = mexp->default_metricgroup_name; in perf_stat__print_shadow_stats_metricgroup()
665 if (strcmp(name, mexp->default_metricgroup_name)) in perf_stat__print_shadow_stats_metricgroup()
670 perf_stat__print_metricgroup_header(config, evsel, ctxp, in perf_stat__print_shadow_stats_metricgroup()
675 if ((*num)++ > 0 && out->new_line) in perf_stat__print_shadow_stats_metricgroup()
676 out->new_line(config, ctxp); in perf_stat__print_shadow_stats_metricgroup()
677 generic_metric(config, mexp, evsel, aggr_idx, out); in perf_stat__print_shadow_stats_metricgroup()
683 void perf_stat__print_shadow_stats(struct perf_stat_config *config, in perf_stat__print_shadow_stats() argument
689 typedef void (*stat_print_function_t)(struct perf_stat_config *config, in perf_stat__print_shadow_stats()
707 print_metric_t print_metric = out->print_metric; in perf_stat__print_shadow_stats()
708 void *ctxp = out->ctx; in perf_stat__print_shadow_stats()
711 if (config->iostat_run) { in perf_stat__print_shadow_stats()
712 iostat_print_metric(config, evsel, out); in perf_stat__print_shadow_stats()
717 fn(config, evsel, aggr_idx, avg, out); in perf_stat__print_shadow_stats()
729 print_metric(config, ctxp, METRIC_THRESHOLD_UNKNOWN, "%8.3f", in perf_stat__print_shadow_stats()
737 perf_stat__print_shadow_stats_metricgroup(config, evsel, aggr_idx, in perf_stat__print_shadow_stats()
741 print_metric(config, ctxp, METRIC_THRESHOLD_UNKNOWN, in perf_stat__print_shadow_stats()
747 * perf_stat__skip_metric_event - Skip the evsel in the Default metricgroup,
754 if (!evsel->default_metricgroup) in perf_stat__skip_metric_event()