Re: [PATCH v3] perf diff: Report noisy for cycles diff
From: Jiri Olsa
Date: Mon Aug 12 2019 - 04:35:47 EST
On Sat, Aug 10, 2019 at 07:30:29AM +0800, Jin Yao wrote:
SNIP
> static int process_block_per_sym(struct hist_entry *he)
> @@ -684,6 +694,21 @@ static struct hist_entry *get_block_pair(struct hist_entry *he,
> return NULL;
> }
>
> +static void init_spark_values(unsigned long *svals, int num)
> +{
> + for (int i = 0; i < num; i++)
> + svals[i] = 0;
> +}
> +
> +static void update_spark_value(unsigned long *svals, int num,
> + struct stats *stats, u64 val)
> +{
> + int n = stats->n;
> +
> + if (n < num)
> + svals[n] = val;
> +}
> +
> static void compute_cycles_diff(struct hist_entry *he,
> struct hist_entry *pair)
> {
> @@ -692,6 +717,23 @@ static void compute_cycles_diff(struct hist_entry *he,
> pair->diff.cycles =
> pair->block_info->cycles_aggr / pair->block_info->num_aggr -
> he->block_info->cycles_aggr / he->block_info->num_aggr;
> +
should below code be executed only for show_noisy?
jirka
> + init_stats(&pair->diff.stats);
> + init_spark_values(pair->diff.svals, NUM_SPARKS);
> +
> + for (int i = 0; i < pair->block_info->num; i++) {
> + u64 val;
> +
> + if (i >= he->block_info->num || i >= NUM_SPARKS)
> + break;
> +
> + val = labs(pair->block_info->cycles_spark[i] -
> + he->block_info->cycles_spark[i]);
> +
> + update_spark_value(pair->diff.svals, NUM_SPARKS,
> + &pair->diff.stats, val);
> + update_stats(&pair->diff.stats, val);
> + }
> }
> }
SNIP