From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, Andi Kleen <ak@linux.intel.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 08/11] perf stat: Print topology/time headers with --metric-only
Date: Mon, 6 Jun 2016 18:04:40 -0300 [thread overview]
Message-ID: <1465247083-4763-9-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1465247083-4763-1-git-send-email-acme@kernel.org>
From: Andi Kleen <ak@linux.intel.com>
When --metric-only is enabled there were no headers for the topology in
interval mode. Also when headers were printed they were on a separate
line.
Before:
$ perf stat --metric-only -A -I 1000 -a
1.001038376 frontend cycles idle insn per cycle stalled cycles per insn branch-misses of all branches
1.001038376 CPU0 123.54% 0.23 5.29 7.61%
1.001038376 CPU1 137.78% 0.24 5.13 10.07%
1.001038376 CPU2 64.48% 0.22 5.50 6.84%
After:
$ perf stat --metric-only -A -I 1000 -a
1.001111114 CPU0 82.46% 0.32 2.60 7.64%
1.001111114 CPU1 126.63% 0.02 42.83 0.15%
1.001111114 CPU2 193.54% 0.32 2.59 6.92%
v2: Move all headers on a single line
Reported-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/1464119559-17203-3-git-send-email-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-stat.c | 32 ++++++++++++++++++++++----------
1 file changed, 22 insertions(+), 10 deletions(-)
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index fd76bb0b18d1..a168e726756b 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -1316,7 +1316,7 @@ static int aggr_header_lens[] = {
[AGGR_GLOBAL] = 0,
};
-static void print_metric_headers(char *prefix)
+static void print_metric_headers(const char *prefix, bool no_indent)
{
struct perf_stat_output_ctx out;
struct perf_evsel *counter;
@@ -1327,7 +1327,7 @@ static void print_metric_headers(char *prefix)
if (prefix)
fprintf(stat_config.output, "%s", prefix);
- if (!csv_output)
+ if (!csv_output && !no_indent)
fprintf(stat_config.output, "%*s",
aggr_header_lens[stat_config.aggr_mode], "");
@@ -1352,28 +1352,40 @@ static void print_interval(char *prefix, struct timespec *ts)
sprintf(prefix, "%6lu.%09lu%s", ts->tv_sec, ts->tv_nsec, csv_sep);
- if (num_print_interval == 0 && !csv_output && !metric_only) {
+ if (num_print_interval == 0 && !csv_output) {
switch (stat_config.aggr_mode) {
case AGGR_SOCKET:
- fprintf(output, "# time socket cpus counts %*s events\n", unit_width, "unit");
+ fprintf(output, "# time socket cpus");
+ if (!metric_only)
+ fprintf(output, " counts %*s events\n", unit_width, "unit");
break;
case AGGR_CORE:
- fprintf(output, "# time core cpus counts %*s events\n", unit_width, "unit");
+ fprintf(output, "# time core cpus");
+ if (!metric_only)
+ fprintf(output, " counts %*s events\n", unit_width, "unit");
break;
case AGGR_NONE:
- fprintf(output, "# time CPU counts %*s events\n", unit_width, "unit");
+ fprintf(output, "# time CPU");
+ if (!metric_only)
+ fprintf(output, " counts %*s events\n", unit_width, "unit");
break;
case AGGR_THREAD:
- fprintf(output, "# time comm-pid counts %*s events\n", unit_width, "unit");
+ fprintf(output, "# time comm-pid");
+ if (!metric_only)
+ fprintf(output, " counts %*s events\n", unit_width, "unit");
break;
case AGGR_GLOBAL:
default:
- fprintf(output, "# time counts %*s events\n", unit_width, "unit");
+ fprintf(output, "# time");
+ if (!metric_only)
+ fprintf(output, " counts %*s events\n", unit_width, "unit");
case AGGR_UNSET:
break;
}
}
+ if (num_print_interval == 0 && metric_only)
+ print_metric_headers(" ", true);
if (++num_print_interval == 25)
num_print_interval = 0;
}
@@ -1442,8 +1454,8 @@ static void print_counters(struct timespec *ts, int argc, const char **argv)
if (metric_only) {
static int num_print_iv;
- if (num_print_iv == 0)
- print_metric_headers(prefix);
+ if (num_print_iv == 0 && !interval)
+ print_metric_headers(prefix, false);
if (num_print_iv++ == 25)
num_print_iv = 0;
if (stat_config.aggr_mode == AGGR_GLOBAL && prefix)
--
2.5.5
next prev parent reply other threads:[~2016-06-06 21:05 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-06 21:04 [GIT PULL 00/11] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-06-06 21:04 ` [PATCH 01/11] perf evsel: Provide way to extract integer value from format_field Arnaldo Carvalho de Melo
2016-06-06 21:04 ` [PATCH 02/11] perf evlist: Fix alloc_mmap() failure path Arnaldo Carvalho de Melo
2016-06-06 21:04 ` [PATCH 03/11] tools lib api: Respect CROSS_COMPILE for the linker Arnaldo Carvalho de Melo
2016-06-06 21:04 ` [PATCH 04/11] perf script: Show call graphs when 1st event doesn't have it but some other has Arnaldo Carvalho de Melo
2016-06-06 21:04 ` [PATCH 05/11] perf test: Ignore .scale and other special files Arnaldo Carvalho de Melo
2016-06-06 21:04 ` [PATCH 06/11] perf stat: Basic support for TopDown in perf stat Arnaldo Carvalho de Melo
2016-06-06 21:04 ` [PATCH 07/11] perf stat: Add computation of TopDown formulas Arnaldo Carvalho de Melo
2016-06-06 21:04 ` Arnaldo Carvalho de Melo [this message]
2016-06-06 21:04 ` [PATCH 09/11] perf stat: Add missing aggregation headers for --metric-only CSV Arnaldo Carvalho de Melo
2016-06-06 21:04 ` [PATCH 10/11] perf config: Fix abnormal termination at perf_parse_file() Arnaldo Carvalho de Melo
2016-06-06 21:04 ` [PATCH 11/11] perf config: Handle the error when config set is NULL at collect_config() Arnaldo Carvalho de Melo
2016-06-08 7:32 ` [GIT PULL 00/11] perf/core improvements and fixes Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1465247083-4763-9-git-send-email-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=ak@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).