From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753869AbbCLILz (ORCPT ); Thu, 12 Mar 2015 04:11:55 -0400 Received: from LGEMRELSE6Q.lge.com ([156.147.1.121]:45915 "EHLO lgemrelse6q.lge.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752978AbbCLILq (ORCPT ); Thu, 12 Mar 2015 04:11:46 -0400 X-Original-SENDERIP: 10.177.220.203 X-Original-MAILFROM: namhyung@kernel.org Date: Thu, 12 Mar 2015 17:06:06 +0900 From: Namhyung Kim To: Andi Kleen Cc: acme@kernel.org, jolsa@redhat.com, linux-kernel@vger.kernel.org, Andi Kleen Subject: Re: [PATCH] perf, tools: Output running time and run/enabled ratio in CSV mode Message-ID: <20150312080606.GM943@sejong> References: <1426083387-17006-1-git-send-email-andi@firstfloor.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1426083387-17006-1-git-send-email-andi@firstfloor.org> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 11, 2015 at 07:16:27AM -0700, Andi Kleen wrote: > From: Andi Kleen > > 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 > Signed-off-by: Andi Kleen Acked-by: Namhyung Kim 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/