Lines Matching +full:re +full:- +full:config
1 // SPDX-License-Identifier: GPL-2.0
59 if (evsel->core.attr.exclude_kernel) in evsel_context()
61 if (evsel->core.attr.exclude_user) in evsel_context()
63 if (evsel->core.attr.exclude_hv) in evsel_context()
65 if (evsel->core.attr.exclude_host) in evsel_context()
67 if (evsel->core.attr.exclude_idle) in evsel_context()
158 evlist__for_each_entry(evsel->evlist, cur) { in find_stat()
166 if (evsel->core.leader->nr_members > 1 && in find_stat()
167 evsel->core.leader != cur->core.leader) in find_stat()
172 /* Ignore if not the cgroup we're looking for. */ in find_stat()
173 if (evsel->cgrp != cur->cgrp) in find_stat()
175 /* Ignore if not the stat we're looking for. */ in find_stat()
181 * ignore if not the PMU we're looking for. in find_stat()
183 if ((type != STAT_NSECS) && (evsel->pmu != cur->pmu)) in find_stat()
186 aggr = &cur->stats->aggr[aggr_idx]; in find_stat()
188 return aggr->counts.val; in find_stat()
189 return aggr->counts.val * cur->scale; in find_stat()
194 static void print_ratio(struct perf_stat_config *config, in print_ratio() argument
206 out->print_metric(config, out->ctx, color, "%7.2f%%", unit, ratio); in print_ratio()
208 out->print_metric(config, out->ctx, NULL, NULL, unit, 0); in print_ratio()
211 static void print_stalled_cycles_front(struct perf_stat_config *config, in print_stalled_cycles_front() argument
218 print_ratio(config, evsel, aggr_idx, stalled, out, STAT_CYCLES, color_ratios, in print_stalled_cycles_front()
222 static void print_stalled_cycles_back(struct perf_stat_config *config, in print_stalled_cycles_back() argument
229 print_ratio(config, evsel, aggr_idx, stalled, out, STAT_CYCLES, color_ratios, in print_stalled_cycles_back()
233 static void print_branch_miss(struct perf_stat_config *config, in print_branch_miss() argument
240 print_ratio(config, evsel, aggr_idx, misses, out, STAT_BRANCHES, color_ratios, in print_branch_miss()
244 static void print_l1d_miss(struct perf_stat_config *config, in print_l1d_miss() argument
251 print_ratio(config, evsel, aggr_idx, misses, out, STAT_L1_DCACHE, color_ratios, in print_l1d_miss()
252 "of all L1-dcache accesses"); in print_l1d_miss()
255 static void print_l1i_miss(struct perf_stat_config *config, in print_l1i_miss() argument
262 print_ratio(config, evsel, aggr_idx, misses, out, STAT_L1_ICACHE, color_ratios, in print_l1i_miss()
263 "of all L1-icache accesses"); in print_l1i_miss()
266 static void print_ll_miss(struct perf_stat_config *config, in print_ll_miss() argument
273 print_ratio(config, evsel, aggr_idx, misses, out, STAT_LL_CACHE, color_ratios, in print_ll_miss()
274 "of all LL-cache accesses"); in print_ll_miss()
277 static void print_dtlb_miss(struct perf_stat_config *config, in print_dtlb_miss() argument
284 print_ratio(config, evsel, aggr_idx, misses, out, STAT_DTLB_CACHE, color_ratios, in print_dtlb_miss()
288 static void print_itlb_miss(struct perf_stat_config *config, in print_itlb_miss() argument
295 print_ratio(config, evsel, aggr_idx, misses, out, STAT_ITLB_CACHE, color_ratios, in print_itlb_miss()
299 static void print_cache_miss(struct perf_stat_config *config, in print_cache_miss() argument
306 print_ratio(config, evsel, aggr_idx, misses, out, STAT_CACHE_REFS, color_ratios, in print_cache_miss()
310 static void print_instructions(struct perf_stat_config *config, in print_instructions() argument
315 print_metric_t print_metric = out->print_metric; in print_instructions()
316 void *ctxp = out->ctx; in print_instructions()
322 print_metric(config, ctxp, NULL, "%7.2f ", "insn per cycle", in print_instructions()
325 print_metric(config, ctxp, NULL, NULL, "insn per cycle", 0); in print_instructions()
328 out->new_line(config, ctxp); in print_instructions()
329 print_metric(config, ctxp, NULL, "%7.2f ", "stalled cycles per insn", in print_instructions()
334 static void print_cycles(struct perf_stat_config *config, in print_cycles() argument
344 out->print_metric(config, out->ctx, NULL, "%8.3f", "GHz", ratio); in print_cycles()
346 out->print_metric(config, out->ctx, NULL, NULL, "GHz", 0); in print_cycles()
349 static void print_nsecs(struct perf_stat_config *config, in print_nsecs() argument
354 print_metric_t print_metric = out->print_metric; in print_nsecs()
355 void *ctxp = out->ctx; in print_nsecs()
359 print_metric(config, ctxp, NULL, "%8.3f", "CPUs utilized", in print_nsecs()
360 nsecs / (wall_time * evsel->scale)); in print_nsecs()
362 print_metric(config, ctxp, NULL, NULL, "CPUs utilized", 0); in print_nsecs()
370 struct evsel * const *metric_events = mexp->metric_events; in prepare_metric()
371 struct metric_ref *metric_refs = mexp->metric_refs; in prepare_metric()
386 scale = 1e-9; in prepare_metric()
390 scale = 1e-6; in prepare_metric()
394 scale = 1e-6; in prepare_metric()
409 struct perf_stat_evsel *ps = metric_events[i]->stats; in prepare_metric()
413 * If there are multiple uncore PMUs and we're not in prepare_metric()
417 if (evsel && evsel->metric_leader && in prepare_metric()
418 evsel->pmu != evsel->metric_leader->pmu && in prepare_metric()
419 mexp->metric_events[i]->pmu == evsel->metric_leader->pmu) { in prepare_metric()
422 evlist__for_each_entry(evsel->evlist, pos) { in prepare_metric()
423 if (pos->pmu != evsel->pmu) in prepare_metric()
425 if (pos->metric_leader != mexp->metric_events[i]) in prepare_metric()
427 ps = pos->stats; in prepare_metric()
432 aggr = &ps->aggr[aggr_idx]; in prepare_metric()
436 if (!metric_events[i]->supported) { in prepare_metric()
447 val = aggr->counts.val; in prepare_metric()
454 return -ENOMEM; in prepare_metric()
469 static void generic_metric(struct perf_stat_config *config, in generic_metric() argument
475 print_metric_t print_metric = out->print_metric; in generic_metric()
476 const char *metric_name = mexp->metric_name; in generic_metric()
477 const char *metric_expr = mexp->metric_expr; in generic_metric()
478 const char *metric_threshold = mexp->metric_threshold; in generic_metric()
479 const char *metric_unit = mexp->metric_unit; in generic_metric()
480 struct evsel * const *metric_events = mexp->metric_events; in generic_metric()
481 int runtime = mexp->runtime; in generic_metric()
485 void *ctxp = out->ctx; in generic_metric()
492 if (config->user_requested_cpu_list) in generic_metric()
493 pctx->sctx.user_requested_cpu_list = strdup(config->user_requested_cpu_list); in generic_metric()
494 pctx->sctx.runtime = runtime; in generic_metric()
495 pctx->sctx.system_wide = config->system_wide; in generic_metric()
525 print_metric(config, ctxp, color, "%8.1f", in generic_metric()
528 print_metric(config, ctxp, color, "%8.2f", in generic_metric()
531 out->force_header ? evsel->name : "", in generic_metric()
535 print_metric(config, ctxp, color, /*unit=*/NULL, in generic_metric()
536 out->force_header ? in generic_metric()
537 (metric_name ?: evsel->name) : "", 0); in generic_metric()
540 print_metric(config, ctxp, color, /*unit=*/NULL, in generic_metric()
541 out->force_header ? in generic_metric()
542 (metric_name ?: evsel->name) : "", 0); in generic_metric()
560 if (expr__parse(&ratio, pctx, mexp->metric_expr)) in test_generic_metric()
568 static void perf_stat__print_metricgroup_header(struct perf_stat_config *config, in perf_stat__print_metricgroup_header() argument
581 * e.g.,TopdownL1 on e-core of ADL. in perf_stat__print_metricgroup_header()
587 if (!need_full_name || !strcmp(last_pmu, evsel->pmu_name)) { in perf_stat__print_metricgroup_header()
588 out->print_metricgroup_header(config, ctxp, NULL); in perf_stat__print_metricgroup_header()
594 scnprintf(full_name, sizeof(full_name), "%s (%s)", name, evsel->pmu_name); in perf_stat__print_metricgroup_header()
598 out->print_metricgroup_header(config, ctxp, full_name); in perf_stat__print_metricgroup_header()
601 last_pmu = evsel->pmu_name; in perf_stat__print_metricgroup_header()
605 * perf_stat__print_shadow_stats_metricgroup - Print out metrics associated with the evsel
606 * For the non-default, all metrics associated
615 void *perf_stat__print_shadow_stats_metricgroup(struct perf_stat_config *config, in perf_stat__print_shadow_stats_metricgroup() argument
625 void *ctxp = out->ctx; in perf_stat__print_shadow_stats_metricgroup()
634 mexp = list_first_entry(&me->head, typeof(*mexp), nd); in perf_stat__print_shadow_stats_metricgroup()
636 list_for_each_entry_from(mexp, &me->head, nd) { in perf_stat__print_shadow_stats_metricgroup()
638 if (!config->metric_only && me->is_default) { in perf_stat__print_shadow_stats_metricgroup()
640 name = mexp->default_metricgroup_name; in perf_stat__print_shadow_stats_metricgroup()
647 if (strcmp(name, mexp->default_metricgroup_name)) in perf_stat__print_shadow_stats_metricgroup()
652 perf_stat__print_metricgroup_header(config, evsel, ctxp, in perf_stat__print_shadow_stats_metricgroup()
658 out->new_line(config, ctxp); in perf_stat__print_shadow_stats_metricgroup()
659 generic_metric(config, mexp, evsel, aggr_idx, out); in perf_stat__print_shadow_stats_metricgroup()
665 void perf_stat__print_shadow_stats(struct perf_stat_config *config, in perf_stat__print_shadow_stats() argument
671 typedef void (*stat_print_function_t)(struct perf_stat_config *config, in perf_stat__print_shadow_stats()
689 print_metric_t print_metric = out->print_metric; in perf_stat__print_shadow_stats()
690 void *ctxp = out->ctx; in perf_stat__print_shadow_stats()
693 if (config->iostat_run) { in perf_stat__print_shadow_stats()
694 iostat_print_metric(config, evsel, out); in perf_stat__print_shadow_stats()
699 fn(config, evsel, aggr_idx, avg, out); in perf_stat__print_shadow_stats()
711 print_metric(config, ctxp, NULL, "%8.3f", unit_buf, ratio); in perf_stat__print_shadow_stats()
717 perf_stat__print_shadow_stats_metricgroup(config, evsel, aggr_idx, in perf_stat__print_shadow_stats()
721 print_metric(config, ctxp, NULL, NULL, NULL, 0); in perf_stat__print_shadow_stats()
725 * perf_stat__skip_metric_event - Skip the evsel in the Default metricgroup,
732 if (!evsel->default_metricgroup) in perf_stat__skip_metric_event()