* [PATCH] perf, tools: Output running time and run/enabled ratio in CSV mode
@ 2015-03-11 14:16 Andi Kleen
2015-03-12 8:06 ` Namhyung Kim
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Andi Kleen @ 2015-03-11 14:16 UTC (permalink / raw)
To: acme; +Cc: jolsa, namhyung, 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 related [flat|nested] 4+ messages in thread
* Re: [PATCH] perf, tools: Output running time and run/enabled ratio in CSV mode
2015-03-11 14:16 [PATCH] perf, tools: Output running time and run/enabled ratio in CSV mode Andi Kleen
@ 2015-03-12 8:06 ` Namhyung Kim
2015-03-12 11:27 ` Jiri Olsa
2015-03-14 7:05 ` [tip:perf/core] perf stat: Output running time and run/ enabled " tip-bot for Andi Kleen
2 siblings, 0 replies; 4+ messages in thread
From: Namhyung Kim @ 2015-03-12 8:06 UTC (permalink / raw)
To: Andi Kleen; +Cc: acme, jolsa, linux-kernel, Andi Kleen
On Wed, Mar 11, 2015 at 07:16:27AM -0700, Andi Kleen wrote:
> 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>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Thanks,
Namhyung
> ---
> 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
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] perf, tools: Output running time and run/enabled ratio in CSV mode
2015-03-11 14:16 [PATCH] perf, tools: Output running time and run/enabled ratio in CSV mode Andi Kleen
2015-03-12 8:06 ` Namhyung Kim
@ 2015-03-12 11:27 ` Jiri Olsa
2015-03-14 7:05 ` [tip:perf/core] perf stat: Output running time and run/ enabled " tip-bot for Andi Kleen
2 siblings, 0 replies; 4+ messages in thread
From: Jiri Olsa @ 2015-03-12 11:27 UTC (permalink / raw)
To: Andi Kleen; +Cc: acme, namhyung, linux-kernel, Andi Kleen
On Wed, Mar 11, 2015 at 07:16:27AM -0700, Andi Kleen wrote:
> 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@kernel.org>
thanks,
jirka
^ permalink raw reply [flat|nested] 4+ messages in thread
* [tip:perf/core] perf stat: Output running time and run/ enabled ratio in CSV mode
2015-03-11 14:16 [PATCH] perf, tools: Output running time and run/enabled ratio in CSV mode Andi Kleen
2015-03-12 8:06 ` Namhyung Kim
2015-03-12 11:27 ` Jiri Olsa
@ 2015-03-14 7:05 ` tip-bot for Andi Kleen
2 siblings, 0 replies; 4+ messages in thread
From: tip-bot for Andi Kleen @ 2015-03-14 7:05 UTC (permalink / raw)
To: linux-tip-commits
Cc: jolsa, mingo, hpa, acme, namhyung, ak, tglx, linux-kernel
Commit-ID: d73515c03c6a2706e088094ff6095a3abefd398b
Gitweb: http://git.kernel.org/tip/d73515c03c6a2706e088094ff6095a3abefd398b
Author: Andi Kleen <ak@linux.intel.com>
AuthorDate: Wed, 11 Mar 2015 07:16:27 -0700
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 13 Mar 2015 07:46:04 -0300
perf stat: Output running time and run/enabled ratio in CSV mode
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
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Jiri Olsa <jolsa@redhat.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/1426083387-17006-1-git-send-email-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-stat.c | 48 ++++++++++++++++++++++++-----------------------
1 file changed, 25 insertions(+), 23 deletions(-)
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index d28949d..d58e50c 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -769,6 +769,19 @@ 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 +1265,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 +1276,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 +1295,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 +1318,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 +1332,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 +1374,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 +1386,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);
}
}
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-03-14 7:05 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-11 14:16 [PATCH] perf, tools: Output running time and run/enabled ratio in CSV mode Andi Kleen
2015-03-12 8:06 ` Namhyung Kim
2015-03-12 11:27 ` Jiri Olsa
2015-03-14 7:05 ` [tip:perf/core] perf stat: Output running time and run/ enabled " tip-bot for Andi Kleen
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.