From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753091AbcAVKGd (ORCPT ); Fri, 22 Jan 2016 05:06:33 -0500 Received: from mx1.redhat.com ([209.132.183.28]:36769 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752737AbcAVKFz (ORCPT ); Fri, 22 Jan 2016 05:05:55 -0500 Date: Fri, 22 Jan 2016 11:05:52 +0100 From: Jiri Olsa To: Andi Kleen Cc: acme@kernel.org, jolsa@kernel.org, mingo@kernel.org, linux-kernel@vger.kernel.org, eranian@google.com, Andi Kleen Subject: Re: [PATCH 1/9] perf, tools, stat: Abstract stat metrics printing Message-ID: <20160122100552.GC11995@krava.brq.redhat.com> References: <1453256812-24006-1-git-send-email-andi@firstfloor.org> <1453256812-24006-2-git-send-email-andi@firstfloor.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1453256812-24006-2-git-send-email-andi@firstfloor.org> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jan 19, 2016 at 06:26:44PM -0800, Andi Kleen wrote: SNIP > > -void perf_stat__print_shadow_stats(FILE *out, struct perf_evsel *evsel, > - double avg, int cpu, enum aggr_mode aggr) > +void perf_stat__print_shadow_stats(struct perf_evsel *evsel, > + double avg, int cpu, > + struct perf_stat_output_ctx *out) > { > + void *ctxp = out->ctx; > + print_metric_t print_metric = out->print_metric; > double total, ratio = 0.0, total2; > int ctx = evsel_context(evsel); > > @@ -307,119 +302,145 @@ void perf_stat__print_shadow_stats(FILE *out, struct perf_evsel *evsel, > total = avg_stats(&runtime_cycles_stats[ctx][cpu]); > if (total) { > ratio = avg / total; > - fprintf(out, " # %5.2f insns per cycle ", ratio); > + print_metric(ctxp, NULL, "%7.2f ", > + "insn per cycle", ratio); > } else { > - fprintf(out, " "); > + print_metric(ctxp, NULL, NULL, "insn per cycle", 0); > } > total = avg_stats(&runtime_stalled_cycles_front_stats[ctx][cpu]); > total = max(total, avg_stats(&runtime_stalled_cycles_back_stats[ctx][cpu])); > > + out->new_line(ctxp); > if (total && avg) { > ratio = total / avg; > - fprintf(out, "\n"); > - if (aggr == AGGR_NONE) > - fprintf(out, " "); > - fprintf(out, " # %5.2f stalled cycles per insn", ratio); > + print_metric(ctxp, NULL, "%7.2f ", > + "stalled cycles per insn", > + ratio); > + } else { > + print_metric(ctxp, NULL, NULL, > + "stalled cycles per insn", 0); > } hum the CSV output showing extra line with empty metrics, and looks like t's because of the above hunk.. [jolsa@krava perf]$ sudo ./perf stat -e cycles,instructions -a -x, ^C160517940,,cycles,2357448795,100.00,,Ghz,2357448795,100.00 84822675,,instructions,2357537479,100.00,0.53,insn per cycle ,,,2357537479,100.00,,stalled cycles per insn,2357537479,100.00 [jolsa@krava perf]$ sudo ./perf stat -e cycles,instructions -a ^C Performance counter stats for 'system wide': 114,951,298 cycles 24,554,494 instructions # 0.21 insn per cycle 0.663756378 seconds time elapsed thanks, jirka