LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH 1/3] perf, tools: Output running time and run/enabled ratio in CSV mode
@ 2015-03-11 15:28 Andi Kleen
2015-03-11 15:28 ` [PATCH 2/3] perf, tools, stat: Fix IPC and other formulas with -A Andi Kleen
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Andi Kleen @ 2015-03-11 15:28 UTC (permalink / raw)
To: acme; +Cc: linux-kernel, Andi Kleen
From: Andi Kleen <ak@linux.intel.com>
The information how much a counter ran in perf stat can be quite
interesting for other tools to judge how trustworthy a measurement is.
Currently it is only output in non CSV mode.
This patches make perf stat always output the running time and the
enabled/running ratio in CSV mode.
This adds two new fields at the end for each line. I assume that existing
tools ignore new fields at the end, so it's on by default.
Only CSV mode is affected, no difference otherwise.
v2: Add extra print_running function
v3: Avoid printing nan
v4: Remove some elses and add brackets.
v5: Move non CSV case into print_running
Reviewed-by: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
tools/perf/builtin-stat.c | 47 ++++++++++++++++++++++++-----------------------
1 file changed, 24 insertions(+), 23 deletions(-)
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index d28949d..765e220 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -769,6 +769,18 @@ static int run_perf_stat(int argc, const char **argv)
return ret;
}
+static void print_running(u64 run, u64 ena)
+{
+ if (csv_output) {
+ fprintf(output, "%s%" PRIu64 "%s%.2f",
+ csv_sep,
+ run,
+ csv_sep,
+ ena ? 100.0 * run / ena : 100.0);
+ } else if (run != ena)
+ fprintf(output, " (%.2f%%)", 100.0 * run / ena);
+}
+
static void print_noise_pct(double total, double avg)
{
double pct = rel_stddev_stats(total, avg);
@@ -1252,6 +1264,7 @@ static void print_aggr(char *prefix)
fprintf(output, "%s%s",
csv_sep, counter->cgrp->name);
+ print_running(run, ena);
fputc('\n', output);
continue;
}
@@ -1262,13 +1275,10 @@ static void print_aggr(char *prefix)
else
abs_printout(id, nr, counter, uval);
- if (!csv_output) {
+ if (!csv_output)
print_noise(counter, 1.0);
- if (run != ena)
- fprintf(output, " (%.2f%%)",
- 100.0 * run / ena);
- }
+ print_running(run, ena);
fputc('\n', output);
}
}
@@ -1284,6 +1294,10 @@ static void print_counter_aggr(struct perf_evsel *counter, char *prefix)
double avg = avg_stats(&ps->res_stats[0]);
int scaled = counter->counts->scaled;
double uval;
+ double avg_enabled, avg_running;
+
+ avg_enabled = avg_stats(&ps->res_stats[1]);
+ avg_running = avg_stats(&ps->res_stats[2]);
if (prefix)
fprintf(output, "%s", prefix);
@@ -1303,6 +1317,7 @@ static void print_counter_aggr(struct perf_evsel *counter, char *prefix)
if (counter->cgrp)
fprintf(output, "%s%s", csv_sep, counter->cgrp->name);
+ print_running(avg_running, avg_enabled);
fputc('\n', output);
return;
}
@@ -1316,19 +1331,7 @@ static void print_counter_aggr(struct perf_evsel *counter, char *prefix)
print_noise(counter, avg);
- if (csv_output) {
- fputc('\n', output);
- return;
- }
-
- if (scaled) {
- double avg_enabled, avg_running;
-
- avg_enabled = avg_stats(&ps->res_stats[1]);
- avg_running = avg_stats(&ps->res_stats[2]);
-
- fprintf(output, " [%5.2f%%]", 100 * avg_running / avg_enabled);
- }
+ print_running(avg_running, avg_enabled);
fprintf(output, "\n");
}
@@ -1370,6 +1373,7 @@ static void print_counter(struct perf_evsel *counter, char *prefix)
fprintf(output, "%s%s",
csv_sep, counter->cgrp->name);
+ print_running(run, ena);
fputc('\n', output);
continue;
}
@@ -1381,13 +1385,10 @@ static void print_counter(struct perf_evsel *counter, char *prefix)
else
abs_printout(cpu, 0, counter, uval);
- if (!csv_output) {
+ if (!csv_output)
print_noise(counter, 1.0);
+ print_running(run, ena);
- if (run != ena)
- fprintf(output, " (%.2f%%)",
- 100.0 * run / ena);
- }
fputc('\n', output);
}
}
--
1.9.3
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/3] perf, tools, stat: Fix IPC and other formulas with -A
2015-03-11 15:28 [PATCH 1/3] perf, tools: Output running time and run/enabled ratio in CSV mode Andi Kleen
@ 2015-03-11 15:28 ` Andi Kleen
2015-03-14 7:05 ` [tip:perf/core] perf " tip-bot for Andi Kleen
2015-03-11 15:28 ` [PATCH 3/3] perf, tools, stat: Always correctly indent ratio column Andi Kleen
2015-03-11 19:53 ` [PATCH 1/3] perf, tools: Output running time and run/enabled ratio in CSV mode Arnaldo Carvalho de Melo
2 siblings, 1 reply; 7+ messages in thread
From: Andi Kleen @ 2015-03-11 15:28 UTC (permalink / raw)
To: acme; +Cc: linux-kernel, Andi Kleen
From: Andi Kleen <ak@linux.intel.com>
perf stat didn't compute the IPC and other formulas for individual
CPUs with -A. Fix this for the easy -A case. As before,
--per-core and --per-socket do not handle it, they
simply print nothing.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
tools/perf/builtin-stat.c | 36 +++++++++++++++++++-----------------
1 file changed, 19 insertions(+), 17 deletions(-)
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 765e220..e78c68d 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -353,39 +353,40 @@ static struct perf_evsel *nth_evsel(int n)
* more semantic information such as miss/hit ratios,
* instruction rates, etc:
*/
-static void update_shadow_stats(struct perf_evsel *counter, u64 *count)
+static void update_shadow_stats(struct perf_evsel *counter, u64 *count,
+ int cpu)
{
if (perf_evsel__match(counter, SOFTWARE, SW_TASK_CLOCK))
- update_stats(&runtime_nsecs_stats[0], count[0]);
+ update_stats(&runtime_nsecs_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HARDWARE, HW_CPU_CYCLES))
- update_stats(&runtime_cycles_stats[0], count[0]);
+ update_stats(&runtime_cycles_stats[cpu], count[0]);
else if (transaction_run &&
perf_evsel__cmp(counter, nth_evsel(T_CYCLES_IN_TX)))
- update_stats(&runtime_cycles_in_tx_stats[0], count[0]);
+ update_stats(&runtime_cycles_in_tx_stats[cpu], count[0]);
else if (transaction_run &&
perf_evsel__cmp(counter, nth_evsel(T_TRANSACTION_START)))
- update_stats(&runtime_transaction_stats[0], count[0]);
+ update_stats(&runtime_transaction_stats[cpu], count[0]);
else if (transaction_run &&
perf_evsel__cmp(counter, nth_evsel(T_ELISION_START)))
- update_stats(&runtime_elision_stats[0], count[0]);
+ update_stats(&runtime_elision_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HARDWARE, HW_STALLED_CYCLES_FRONTEND))
- update_stats(&runtime_stalled_cycles_front_stats[0], count[0]);
+ update_stats(&runtime_stalled_cycles_front_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HARDWARE, HW_STALLED_CYCLES_BACKEND))
- update_stats(&runtime_stalled_cycles_back_stats[0], count[0]);
+ update_stats(&runtime_stalled_cycles_back_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HARDWARE, HW_BRANCH_INSTRUCTIONS))
- update_stats(&runtime_branches_stats[0], count[0]);
+ update_stats(&runtime_branches_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HARDWARE, HW_CACHE_REFERENCES))
- update_stats(&runtime_cacherefs_stats[0], count[0]);
+ update_stats(&runtime_cacherefs_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_L1D))
- update_stats(&runtime_l1_dcache_stats[0], count[0]);
+ update_stats(&runtime_l1_dcache_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_L1I))
- update_stats(&runtime_l1_icache_stats[0], count[0]);
+ update_stats(&runtime_l1_icache_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_LL))
- update_stats(&runtime_ll_cache_stats[0], count[0]);
+ update_stats(&runtime_ll_cache_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_DTLB))
- update_stats(&runtime_dtlb_cache_stats[0], count[0]);
+ update_stats(&runtime_dtlb_cache_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_ITLB))
- update_stats(&runtime_itlb_cache_stats[0], count[0]);
+ update_stats(&runtime_itlb_cache_stats[cpu], count[0]);
}
static void zero_per_pkg(struct perf_evsel *counter)
@@ -447,7 +448,8 @@ static int read_cb(struct perf_evsel *evsel, int cpu, int thread __maybe_unused,
perf_evsel__compute_deltas(evsel, cpu, count);
perf_counts_values__scale(count, scale, NULL);
evsel->counts->cpu[cpu] = *count;
- update_shadow_stats(evsel, count->values);
+ if (aggr_mode == AGGR_NONE)
+ update_shadow_stats(evsel, count->values, cpu);
break;
case AGGR_GLOBAL:
aggr->val += count->val;
@@ -495,7 +497,7 @@ static int read_counter_aggr(struct perf_evsel *counter)
/*
* Save the full runtime - to allow normalization during printout:
*/
- update_shadow_stats(counter, count);
+ update_shadow_stats(counter, count, 0);
return 0;
}
--
1.9.3
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/3] perf, tools, stat: Always correctly indent ratio column
2015-03-11 15:28 [PATCH 1/3] perf, tools: Output running time and run/enabled ratio in CSV mode Andi Kleen
2015-03-11 15:28 ` [PATCH 2/3] perf, tools, stat: Fix IPC and other formulas with -A Andi Kleen
@ 2015-03-11 15:28 ` Andi Kleen
2015-03-14 7:06 ` [tip:perf/core] perf " tip-bot for Andi Kleen
2015-03-11 19:53 ` [PATCH 1/3] perf, tools: Output running time and run/enabled ratio in CSV mode Arnaldo Carvalho de Melo
2 siblings, 1 reply; 7+ messages in thread
From: Andi Kleen @ 2015-03-11 15:28 UTC (permalink / raw)
To: acme; +Cc: linux-kernel, Andi Kleen
From: Andi Kleen <ak@linux.intel.com>
When cycles or instructions do not print anything, as in being,
--per-socket or --per-core modi, the ratio column was not
correctly indented for them. This lead to some ratios
not lining up with the others. Always indent correctly
when nothing is printed.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
tools/perf/builtin-stat.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index e78c68d..41b296f 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -1093,7 +1093,8 @@ static void abs_printout(int id, int nr, struct perf_evsel *evsel, double avg)
if (total) {
ratio = avg / total;
fprintf(output, " # %5.2f insns per cycle ", ratio);
- }
+ } else
+ fprintf(output, " ");
total = avg_stats(&runtime_stalled_cycles_front_stats[cpu]);
total = max(total, avg_stats(&runtime_stalled_cycles_back_stats[cpu]));
@@ -1162,7 +1163,8 @@ static void abs_printout(int id, int nr, struct perf_evsel *evsel, double avg)
if (total) {
ratio = avg / total;
fprintf(output, " # %8.3f GHz ", ratio);
- }
+ } else
+ fprintf(output, " ");
} else if (transaction_run &&
perf_evsel__cmp(evsel, nth_evsel(T_CYCLES_IN_TX))) {
total = avg_stats(&runtime_cycles_stats[cpu]);
--
1.9.3
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] perf, tools: Output running time and run/enabled ratio in CSV mode
2015-03-11 15:28 [PATCH 1/3] perf, tools: Output running time and run/enabled ratio in CSV mode Andi Kleen
2015-03-11 15:28 ` [PATCH 2/3] perf, tools, stat: Fix IPC and other formulas with -A Andi Kleen
2015-03-11 15:28 ` [PATCH 3/3] perf, tools, stat: Always correctly indent ratio column Andi Kleen
@ 2015-03-11 19:53 ` Arnaldo Carvalho de Melo
2015-03-11 20:42 ` Jiri Olsa
2 siblings, 1 reply; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-03-11 19:53 UTC (permalink / raw)
To: Jiri Olsa; +Cc: linux-kernel, Andi Kleen
Em Wed, Mar 11, 2015 at 08:28:00AM -0700, Andi Kleen escreveu:
> From: Andi Kleen <ak@linux.intel.com>
>
> The information how much a counter ran in perf stat can be quite
> interesting for other tools to judge how trustworthy a measurement is.
>
> Currently it is only output in non CSV mode.
>
> This patches make perf stat always output the running time and the
> enabled/running ratio in CSV mode.
>
> This adds two new fields at the end for each line. I assume that existing
> tools ignore new fields at the end, so it's on by default.
>
> Only CSV mode is affected, no difference otherwise.
>
> v2: Add extra print_running function
> v3: Avoid printing nan
> v4: Remove some elses and add brackets.
> v5: Move non CSV case into print_running
> Reviewed-by: Jiri Olsa <jolsa@redhat.com>
Jiri, have you sent that "Reviewed-by" tag? Don't remember seeing it.
- Arnaldo
> Signed-off-by: Andi Kleen <ak@linux.intel.com>
> ---
> tools/perf/builtin-stat.c | 47 ++++++++++++++++++++++++-----------------------
> 1 file changed, 24 insertions(+), 23 deletions(-)
>
> diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
> index d28949d..765e220 100644
> --- a/tools/perf/builtin-stat.c
> +++ b/tools/perf/builtin-stat.c
> @@ -769,6 +769,18 @@ static int run_perf_stat(int argc, const char **argv)
> return ret;
> }
>
> +static void print_running(u64 run, u64 ena)
> +{
> + if (csv_output) {
> + fprintf(output, "%s%" PRIu64 "%s%.2f",
> + csv_sep,
> + run,
> + csv_sep,
> + ena ? 100.0 * run / ena : 100.0);
> + } else if (run != ena)
> + fprintf(output, " (%.2f%%)", 100.0 * run / ena);
> +}
> +
> static void print_noise_pct(double total, double avg)
> {
> double pct = rel_stddev_stats(total, avg);
> @@ -1252,6 +1264,7 @@ static void print_aggr(char *prefix)
> fprintf(output, "%s%s",
> csv_sep, counter->cgrp->name);
>
> + print_running(run, ena);
> fputc('\n', output);
> continue;
> }
> @@ -1262,13 +1275,10 @@ static void print_aggr(char *prefix)
> else
> abs_printout(id, nr, counter, uval);
>
> - if (!csv_output) {
> + if (!csv_output)
> print_noise(counter, 1.0);
>
> - if (run != ena)
> - fprintf(output, " (%.2f%%)",
> - 100.0 * run / ena);
> - }
> + print_running(run, ena);
> fputc('\n', output);
> }
> }
> @@ -1284,6 +1294,10 @@ static void print_counter_aggr(struct perf_evsel *counter, char *prefix)
> double avg = avg_stats(&ps->res_stats[0]);
> int scaled = counter->counts->scaled;
> double uval;
> + double avg_enabled, avg_running;
> +
> + avg_enabled = avg_stats(&ps->res_stats[1]);
> + avg_running = avg_stats(&ps->res_stats[2]);
>
> if (prefix)
> fprintf(output, "%s", prefix);
> @@ -1303,6 +1317,7 @@ static void print_counter_aggr(struct perf_evsel *counter, char *prefix)
> if (counter->cgrp)
> fprintf(output, "%s%s", csv_sep, counter->cgrp->name);
>
> + print_running(avg_running, avg_enabled);
> fputc('\n', output);
> return;
> }
> @@ -1316,19 +1331,7 @@ static void print_counter_aggr(struct perf_evsel *counter, char *prefix)
>
> print_noise(counter, avg);
>
> - if (csv_output) {
> - fputc('\n', output);
> - return;
> - }
> -
> - if (scaled) {
> - double avg_enabled, avg_running;
> -
> - avg_enabled = avg_stats(&ps->res_stats[1]);
> - avg_running = avg_stats(&ps->res_stats[2]);
> -
> - fprintf(output, " [%5.2f%%]", 100 * avg_running / avg_enabled);
> - }
> + print_running(avg_running, avg_enabled);
> fprintf(output, "\n");
> }
>
> @@ -1370,6 +1373,7 @@ static void print_counter(struct perf_evsel *counter, char *prefix)
> fprintf(output, "%s%s",
> csv_sep, counter->cgrp->name);
>
> + print_running(run, ena);
> fputc('\n', output);
> continue;
> }
> @@ -1381,13 +1385,10 @@ static void print_counter(struct perf_evsel *counter, char *prefix)
> else
> abs_printout(cpu, 0, counter, uval);
>
> - if (!csv_output) {
> + if (!csv_output)
> print_noise(counter, 1.0);
> + print_running(run, ena);
>
> - if (run != ena)
> - fprintf(output, " (%.2f%%)",
> - 100.0 * run / ena);
> - }
> fputc('\n', output);
> }
> }
> --
> 1.9.3
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] perf, tools: Output running time and run/enabled ratio in CSV mode
2015-03-11 19:53 ` [PATCH 1/3] perf, tools: Output running time and run/enabled ratio in CSV mode Arnaldo Carvalho de Melo
@ 2015-03-11 20:42 ` Jiri Olsa
0 siblings, 0 replies; 7+ messages in thread
From: Jiri Olsa @ 2015-03-11 20:42 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo; +Cc: Jiri Olsa, linux-kernel, Andi Kleen
On Wed, Mar 11, 2015 at 04:53:26PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Wed, Mar 11, 2015 at 08:28:00AM -0700, Andi Kleen escreveu:
> > From: Andi Kleen <ak@linux.intel.com>
> >
> > The information how much a counter ran in perf stat can be quite
> > interesting for other tools to judge how trustworthy a measurement is.
> >
> > Currently it is only output in non CSV mode.
> >
> > This patches make perf stat always output the running time and the
> > enabled/running ratio in CSV mode.
> >
> > This adds two new fields at the end for each line. I assume that existing
> > tools ignore new fields at the end, so it's on by default.
> >
> > Only CSV mode is affected, no difference otherwise.
> >
> > v2: Add extra print_running function
> > v3: Avoid printing nan
> > v4: Remove some elses and add brackets.
> > v5: Move non CSV case into print_running
> > Reviewed-by: Jiri Olsa <jolsa@redhat.com>
>
> Jiri, have you sent that "Reviewed-by" tag? Don't remember seeing it.
I might have, but can't find it now..
anyway there's new version, I'll check it
jirka
^ permalink raw reply [flat|nested] 7+ messages in thread
* [tip:perf/core] perf stat: Fix IPC and other formulas with -A
2015-03-11 15:28 ` [PATCH 2/3] perf, tools, stat: Fix IPC and other formulas with -A Andi Kleen
@ 2015-03-14 7:05 ` tip-bot for Andi Kleen
0 siblings, 0 replies; 7+ messages in thread
From: tip-bot for Andi Kleen @ 2015-03-14 7:05 UTC (permalink / raw)
To: linux-tip-commits; +Cc: tglx, acme, mingo, ak, hpa, linux-kernel
Commit-ID: 56f0fd45d8df51542930b9b2e1acee5034b53479
Gitweb: http://git.kernel.org/tip/56f0fd45d8df51542930b9b2e1acee5034b53479
Author: Andi Kleen <ak@linux.intel.com>
AuthorDate: Wed, 11 Mar 2015 08:28:01 -0700
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 13 Mar 2015 07:46:10 -0300
perf stat: Fix IPC and other formulas with -A
perf stat didn't compute the IPC and other formulas for individual CPUs
with -A. Fix this for the easy -A case. As before, --per-core and
--per-socket do not handle it, they simply print nothing.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Link: http://lkml.kernel.org/r/1426087682-22765-2-git-send-email-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-stat.c | 36 +++++++++++++++++++-----------------
1 file changed, 19 insertions(+), 17 deletions(-)
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index d58e50c..c95dbda 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -353,39 +353,40 @@ static struct perf_evsel *nth_evsel(int n)
* more semantic information such as miss/hit ratios,
* instruction rates, etc:
*/
-static void update_shadow_stats(struct perf_evsel *counter, u64 *count)
+static void update_shadow_stats(struct perf_evsel *counter, u64 *count,
+ int cpu)
{
if (perf_evsel__match(counter, SOFTWARE, SW_TASK_CLOCK))
- update_stats(&runtime_nsecs_stats[0], count[0]);
+ update_stats(&runtime_nsecs_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HARDWARE, HW_CPU_CYCLES))
- update_stats(&runtime_cycles_stats[0], count[0]);
+ update_stats(&runtime_cycles_stats[cpu], count[0]);
else if (transaction_run &&
perf_evsel__cmp(counter, nth_evsel(T_CYCLES_IN_TX)))
- update_stats(&runtime_cycles_in_tx_stats[0], count[0]);
+ update_stats(&runtime_cycles_in_tx_stats[cpu], count[0]);
else if (transaction_run &&
perf_evsel__cmp(counter, nth_evsel(T_TRANSACTION_START)))
- update_stats(&runtime_transaction_stats[0], count[0]);
+ update_stats(&runtime_transaction_stats[cpu], count[0]);
else if (transaction_run &&
perf_evsel__cmp(counter, nth_evsel(T_ELISION_START)))
- update_stats(&runtime_elision_stats[0], count[0]);
+ update_stats(&runtime_elision_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HARDWARE, HW_STALLED_CYCLES_FRONTEND))
- update_stats(&runtime_stalled_cycles_front_stats[0], count[0]);
+ update_stats(&runtime_stalled_cycles_front_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HARDWARE, HW_STALLED_CYCLES_BACKEND))
- update_stats(&runtime_stalled_cycles_back_stats[0], count[0]);
+ update_stats(&runtime_stalled_cycles_back_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HARDWARE, HW_BRANCH_INSTRUCTIONS))
- update_stats(&runtime_branches_stats[0], count[0]);
+ update_stats(&runtime_branches_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HARDWARE, HW_CACHE_REFERENCES))
- update_stats(&runtime_cacherefs_stats[0], count[0]);
+ update_stats(&runtime_cacherefs_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_L1D))
- update_stats(&runtime_l1_dcache_stats[0], count[0]);
+ update_stats(&runtime_l1_dcache_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_L1I))
- update_stats(&runtime_l1_icache_stats[0], count[0]);
+ update_stats(&runtime_l1_icache_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_LL))
- update_stats(&runtime_ll_cache_stats[0], count[0]);
+ update_stats(&runtime_ll_cache_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_DTLB))
- update_stats(&runtime_dtlb_cache_stats[0], count[0]);
+ update_stats(&runtime_dtlb_cache_stats[cpu], count[0]);
else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_ITLB))
- update_stats(&runtime_itlb_cache_stats[0], count[0]);
+ update_stats(&runtime_itlb_cache_stats[cpu], count[0]);
}
static void zero_per_pkg(struct perf_evsel *counter)
@@ -447,7 +448,8 @@ static int read_cb(struct perf_evsel *evsel, int cpu, int thread __maybe_unused,
perf_evsel__compute_deltas(evsel, cpu, count);
perf_counts_values__scale(count, scale, NULL);
evsel->counts->cpu[cpu] = *count;
- update_shadow_stats(evsel, count->values);
+ if (aggr_mode == AGGR_NONE)
+ update_shadow_stats(evsel, count->values, cpu);
break;
case AGGR_GLOBAL:
aggr->val += count->val;
@@ -495,7 +497,7 @@ static int read_counter_aggr(struct perf_evsel *counter)
/*
* Save the full runtime - to allow normalization during printout:
*/
- update_shadow_stats(counter, count);
+ update_shadow_stats(counter, count, 0);
return 0;
}
^ permalink raw reply [flat|nested] 7+ messages in thread
* [tip:perf/core] perf stat: Always correctly indent ratio column
2015-03-11 15:28 ` [PATCH 3/3] perf, tools, stat: Always correctly indent ratio column Andi Kleen
@ 2015-03-14 7:06 ` tip-bot for Andi Kleen
0 siblings, 0 replies; 7+ messages in thread
From: tip-bot for Andi Kleen @ 2015-03-14 7:06 UTC (permalink / raw)
To: linux-tip-commits; +Cc: acme, hpa, tglx, mingo, linux-kernel, ak
Commit-ID: 7910352852f377f6d12286f922299d7ad1cfb2e3
Gitweb: http://git.kernel.org/tip/7910352852f377f6d12286f922299d7ad1cfb2e3
Author: Andi Kleen <ak@linux.intel.com>
AuthorDate: Wed, 11 Mar 2015 08:28:02 -0700
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 13 Mar 2015 07:47:44 -0300
perf stat: Always correctly indent ratio column
When cycles or instructions do not print anything, as in being,
--per-socket or --per-core modi, the ratio column was not correctly
indented for them. This lead to some ratios not lining up with the
others. Always indent correctly when nothing is printed.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Link: http://lkml.kernel.org/r/1426087682-22765-3-git-send-email-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-stat.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index c95dbda..d4d1b77 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -1094,6 +1094,8 @@ static void abs_printout(int id, int nr, struct perf_evsel *evsel, double avg)
if (total) {
ratio = avg / total;
fprintf(output, " # %5.2f insns per cycle ", ratio);
+ } else {
+ fprintf(output, " ");
}
total = avg_stats(&runtime_stalled_cycles_front_stats[cpu]);
total = max(total, avg_stats(&runtime_stalled_cycles_back_stats[cpu]));
@@ -1163,6 +1165,8 @@ static void abs_printout(int id, int nr, struct perf_evsel *evsel, double avg)
if (total) {
ratio = avg / total;
fprintf(output, " # %8.3f GHz ", ratio);
+ } else {
+ fprintf(output, " ");
}
} else if (transaction_run &&
perf_evsel__cmp(evsel, nth_evsel(T_CYCLES_IN_TX))) {
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-03-14 7:06 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-11 15:28 [PATCH 1/3] perf, tools: Output running time and run/enabled ratio in CSV mode Andi Kleen
2015-03-11 15:28 ` [PATCH 2/3] perf, tools, stat: Fix IPC and other formulas with -A Andi Kleen
2015-03-14 7:05 ` [tip:perf/core] perf " tip-bot for Andi Kleen
2015-03-11 15:28 ` [PATCH 3/3] perf, tools, stat: Always correctly indent ratio column Andi Kleen
2015-03-14 7:06 ` [tip:perf/core] perf " tip-bot for Andi Kleen
2015-03-11 19:53 ` [PATCH 1/3] perf, tools: Output running time and run/enabled ratio in CSV mode Arnaldo Carvalho de Melo
2015-03-11 20:42 ` Jiri Olsa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).