All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Andi Kleen <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: andi@firstfloor.org, linux-kernel@vger.kernel.org,
	tglx@linutronix.de, hpa@zytor.com, acme@redhat.com,
	ak@linux.intel.com, mingo@kernel.org, jolsa@kernel.org
Subject: [tip:perf/urgent] perf script: Support total cycles count
Date: Fri, 26 Oct 2018 00:47:50 -0700	[thread overview]
Message-ID: <tip-fe57120e18a1f9124ca758c89cc54f91333d1847@git.kernel.org> (raw)
In-Reply-To: <20180924170732.GA28040@tassilo.jf.intel.com>

Commit-ID:  fe57120e18a1f9124ca758c89cc54f91333d1847
Gitweb:     https://git.kernel.org/tip/fe57120e18a1f9124ca758c89cc54f91333d1847
Author:     Andi Kleen <ak@linux.intel.com>
AuthorDate: Mon, 24 Sep 2018 10:07:32 -0700
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 24 Oct 2018 15:29:56 -0300

perf script: Support total cycles count

For 'perf script' brstackinsn also print a running cycles count.  This
makes it easier to calculate cycle deltas for code sections measured
with LBRs.

% perf record -b -a sleep 1
% perf script -F +brstackinsn
...
        00007f73ecc41083        insn: 74 06                     # PRED 9 cycles [17] 1.11 IPC
        00007f73ecc4108b        insn: a8 10
        00007f73ecc4108d        insn: 74 71                     # PRED 1 cycles [18] 1.00 IPC
        00007f73ecc41100        insn: 48 8b 46 10
        00007f73ecc41104        insn: 4c 8b 38
        00007f73ecc41107        insn: 4d 85 ff
        00007f73ecc4110a        insn: 0f 84 b0 00 00 00
        00007f73ecc41110        insn: 83 43 58 01
        00007f73ecc41114        insn: 48 89 df
        00007f73ecc41117        insn: e8 94 73 04 00            # PRED 6 cycles [24] 1.00 IPC

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <andi@firstfloor.org>
Link: http://lkml.kernel.org/r/20180924170732.GA28040@tassilo.jf.intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-script.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 9d2249ea75e3..b5bc85bd0bbe 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -913,7 +913,7 @@ static int grab_bb(u8 *buffer, u64 start, u64 end,
 
 static int ip__fprintf_jump(uint64_t ip, struct branch_entry *en,
 			    struct perf_insn *x, u8 *inbuf, int len,
-			    int insn, FILE *fp)
+			    int insn, FILE *fp, int *total_cycles)
 {
 	int printed = fprintf(fp, "\t%016" PRIx64 "\t%-30s\t#%s%s%s%s", ip,
 			      dump_insn(x, ip, inbuf, len, NULL),
@@ -922,7 +922,8 @@ static int ip__fprintf_jump(uint64_t ip, struct branch_entry *en,
 			      en->flags.in_tx ? " INTX" : "",
 			      en->flags.abort ? " ABORT" : "");
 	if (en->flags.cycles) {
-		printed += fprintf(fp, " %d cycles", en->flags.cycles);
+		*total_cycles += en->flags.cycles;
+		printed += fprintf(fp, " %d cycles [%d]", en->flags.cycles, *total_cycles);
 		if (insn)
 			printed += fprintf(fp, " %.2f IPC", (float)insn / en->flags.cycles);
 	}
@@ -979,6 +980,7 @@ static int perf_sample__fprintf_brstackinsn(struct perf_sample *sample,
 	u8 buffer[MAXBB];
 	unsigned off;
 	struct symbol *lastsym = NULL;
+	int total_cycles = 0;
 
 	if (!(br && br->nr))
 		return 0;
@@ -999,7 +1001,7 @@ static int perf_sample__fprintf_brstackinsn(struct perf_sample *sample,
 		printed += ip__fprintf_sym(br->entries[nr - 1].from, thread,
 					   x.cpumode, x.cpu, &lastsym, attr, fp);
 		printed += ip__fprintf_jump(br->entries[nr - 1].from, &br->entries[nr - 1],
-					    &x, buffer, len, 0, fp);
+					    &x, buffer, len, 0, fp, &total_cycles);
 	}
 
 	/* Print all blocks */
@@ -1027,7 +1029,8 @@ static int perf_sample__fprintf_brstackinsn(struct perf_sample *sample,
 
 			printed += ip__fprintf_sym(ip, thread, x.cpumode, x.cpu, &lastsym, attr, fp);
 			if (ip == end) {
-				printed += ip__fprintf_jump(ip, &br->entries[i], &x, buffer + off, len - off, insn, fp);
+				printed += ip__fprintf_jump(ip, &br->entries[i], &x, buffer + off, len - off, insn, fp,
+							    &total_cycles);
 				break;
 			} else {
 				printed += fprintf(fp, "\t%016" PRIx64 "\t%s\n", ip,

      reply	other threads:[~2018-10-26  7:48 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-20 18:05 Make perf script easier to use for itrace Andi Kleen
2018-09-20 18:05 ` [PATCH v6 1/5] tools, perf, script: Add --insn-trace for instruction decoding Andi Kleen
2018-10-08 17:50   ` Arnaldo Carvalho de Melo
2018-10-08 18:03   ` Arnaldo Carvalho de Melo
2018-10-08 18:41     ` Andi Kleen
2018-10-08 19:40       ` Arnaldo Carvalho de Melo
2018-10-26  7:45   ` [tip:perf/urgent] perf " tip-bot for Andi Kleen
2018-09-20 18:05 ` [PATCH v6 2/5] perf, tools, script: Make itrace script default to all calls Andi Kleen
2018-10-26  7:46   ` [tip:perf/urgent] perf " tip-bot for Andi Kleen
2018-09-20 18:05 ` [PATCH v6 3/5] tools, perf, script: Add --call-trace and --call-ret-trace Andi Kleen
2018-09-28 10:23   ` leo.yan
2018-09-28 17:19     ` Andi Kleen
2018-09-29  7:39       ` leo.yan
2018-10-02 14:24         ` Arnaldo Carvalho de Melo
2018-10-02 23:09           ` leo.yan
2018-10-26  7:46   ` [tip:perf/urgent] tools " tip-bot for Andi Kleen
2018-09-20 18:05 ` [PATCH v6 4/5] tools, perf, script: Implement --graph-function Andi Kleen
2018-10-26  7:47   ` [tip:perf/urgent] perf " tip-bot for Andi Kleen
2018-09-20 18:05 ` [PATCH v6 5/5] perf, tools, script: Support total cycles count Andi Kleen
2018-09-24 17:07   ` Andi Kleen
2018-10-26  7:47     ` tip-bot for Andi Kleen [this message]

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=tip-fe57120e18a1f9124ca758c89cc54f91333d1847@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=acme@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=andi@firstfloor.org \
    --cc=hpa@zytor.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=tglx@linutronix.de \
    /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 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.