All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>, Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	linux-perf-users@vger.kernel.org,
	Kan Liang <kan.liang@linux.intel.com>,
	Leo Yan <leo.yan@linaro.org>, Andi Kleen <ak@linux.intel.com>,
	Athira Rajeev <atrajeev@linux.vnet.ibm.com>,
	James Clark <james.clark@arm.com>,
	Xing Zhengjun <zhengjun.xing@linux.intel.com>
Subject: Re: [PATCH 20/19] perf stat: Factor out evsel__count_has_error()
Date: Fri, 14 Oct 2022 17:04:38 -0300	[thread overview]
Message-ID: <Y0nA1jdFU6XBlZRL@kernel.org> (raw)
In-Reply-To: <20221014181655.771612-1-namhyung@kernel.org>

Em Fri, Oct 14, 2022 at 11:16:55AM -0700, Namhyung Kim escreveu:
> It's possible to have 0 enabled/running time for some per-task or per-cgroup
> events since it's not scheduled on any CPU.  Treating the whole event as
> failed would not work in this case.  Thinking again, the code only existed
> when any CPU-level aggregation is enabled (like per-socket, per-core, ...).
> 
> To make it clearer, factor out the condition check into the new
> evsel__count_has_error() function and add some comments.

So I should just add this one to the 19-long patchkit I already applied
locally, ok.

- Arnaldo
 
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
>  tools/perf/util/stat.c | 25 +++++++++++++++++++++----
>  1 file changed, 21 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c
> index 6ab9c58beca7..9dfa8cac6bc4 100644
> --- a/tools/perf/util/stat.c
> +++ b/tools/perf/util/stat.c
> @@ -396,6 +396,25 @@ static int check_per_pkg(struct evsel *counter, struct perf_counts_values *vals,
>  	return ret;
>  }
>  
> +static bool evsel__count_has_error(struct evsel *evsel,
> +				   struct perf_counts_values *count,
> +				   struct perf_stat_config *config)
> +{
> +	/* the evsel was failed already */
> +	if (evsel->err || evsel->counts->scaled == -1)
> +		return true;
> +
> +	/* this is meaningful for CPU aggregation modes only */
> +	if (config->aggr_mode == AGGR_GLOBAL)
> +		return false;
> +
> +	/* it's considered ok when it actually ran */
> +	if (count->ena != 0 && count->run != 0)
> +		return false;
> +
> +	return true;
> +}
> +
>  static int
>  process_counter_values(struct perf_stat_config *config, struct evsel *evsel,
>  		       int cpu_map_idx, int thread,
> @@ -450,11 +469,9 @@ process_counter_values(struct perf_stat_config *config, struct evsel *evsel,
>  
>  			/*
>  			 * When any result is bad, make them all to give consistent output
> -			 * in interval mode.  But per-task counters can have 0 enabled time
> -			 * when some tasks are idle.
> +			 * in interval mode.
>  			 */
> -			if (((count->ena == 0 || count->run == 0) && cpu.cpu != -1) ||
> -			    evsel->counts->scaled == -1) {
> +			if (evsel__count_has_error(evsel, count, config) && !ps_aggr->failed) {
>  				ps_aggr->counts.val = 0;
>  				ps_aggr->counts.ena = 0;
>  				ps_aggr->counts.run = 0;
> -- 
> 2.38.0.413.g74048e4d9e-goog

-- 

- Arnaldo

      reply	other threads:[~2022-10-14 20:04 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-14  6:15 [PATCHSET 00/19] perf stat: Cleanup counter aggregation (v2) Namhyung Kim
2022-10-14  6:15 ` [PATCH 01/19] perf tools: Save evsel->pmu in parse_events() Namhyung Kim
2022-10-15 12:55   ` Arnaldo Carvalho de Melo
2022-10-14  6:15 ` [PATCH 02/19] perf tools: Use pmu info in evsel__is_hybrid() Namhyung Kim
2022-10-14  6:15 ` [PATCH 03/19] perf stat: Use evsel__is_hybrid() more Namhyung Kim
2022-10-14  6:15 ` [PATCH 04/19] perf stat: Add aggr id for global mode Namhyung Kim
2022-10-14  6:15 ` [PATCH 05/19] perf stat: Add cpu aggr id for no aggregation mode Namhyung Kim
2022-10-14  6:15 ` [PATCH 06/19] perf stat: Add 'needs_sort' argument to cpu_aggr_map__new() Namhyung Kim
2022-10-14  6:15 ` [PATCH 07/19] perf stat: Add struct perf_stat_aggr to perf_stat_evsel Namhyung Kim
2022-10-14  6:15 ` [PATCH 08/19] perf stat: Allocate evsel->stats->aggr properly Namhyung Kim
2022-10-14  6:15 ` [PATCH 09/19] perf stat: Aggregate events using evsel->stats->aggr Namhyung Kim
2022-10-14  6:15 ` [PATCH 10/19] perf stat: Aggregate per-thread stats " Namhyung Kim
2022-10-14  6:15 ` [PATCH 11/19] perf stat: Allocate aggr counts for recorded data Namhyung Kim
2022-10-14  6:15 ` [PATCH 12/19] perf stat: Reset aggr counts for each interval Namhyung Kim
2022-10-14  6:15 ` [PATCH 13/19] perf stat: Split process_counters() Namhyung Kim
2022-10-14  6:15 ` [PATCH 14/19] perf stat: Add perf_stat_merge_counters() Namhyung Kim
2022-10-14  6:15 ` [PATCH 15/19] perf stat: Add perf_stat_process_percore() Namhyung Kim
2022-10-14  6:15 ` [PATCH 16/19] perf stat: Add perf_stat_process_shadow_stats() Namhyung Kim
2022-10-14  6:15 ` [PATCH 17/19] perf stat: Display event stats using aggr counts Namhyung Kim
2022-10-15 13:11   ` Arnaldo Carvalho de Melo
2022-10-14  6:15 ` [PATCH 18/19] perf stat: Display percore events properly Namhyung Kim
2022-10-14  6:15 ` [PATCH 19/19] perf stat: Remove unused perf_counts.aggr field Namhyung Kim
2022-10-16 13:32   ` Athira Rajeev
2022-10-17 23:31     ` Namhyung Kim
2022-10-18  4:50       ` Athira Rajeev
2022-10-14  6:56 ` [PATCHSET 00/19] perf stat: Cleanup counter aggregation (v2) Jiri Olsa
2022-10-14 18:10   ` Namhyung Kim
2022-10-14 18:16     ` [PATCH 20/19] perf stat: Factor out evsel__count_has_error() Namhyung Kim
2022-10-14 20:04       ` Arnaldo Carvalho de Melo [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y0nA1jdFU6XBlZRL@kernel.org \
    --to=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=atrajeev@linux.vnet.ibm.com \
    --cc=irogers@google.com \
    --cc=james.clark@arm.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@linux.intel.com \
    --cc=leo.yan@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=zhengjun.xing@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.