From: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
To: acme@kernel.org
Cc: mingo@kernel.org, peterz@infradead.org,
linux-kernel@vger.kernel.org, hemant@linux.vnet.ibm.com,
naveen.n.rao@linux.vnet.ibm.com,
Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Subject: [PATCH v2 3/3] perf kvm: Fix output fields instead of 'trace' for perf kvm report on powerpc
Date: Fri, 22 Jan 2016 11:28:12 +0530 [thread overview]
Message-ID: <1453442292-7790-4-git-send-email-ravi.bangoria@linux.vnet.ibm.com> (raw)
In-Reply-To: <1453442292-7790-1-git-send-email-ravi.bangoria@linux.vnet.ibm.com>
commit d49dadea7862 ("perf tools: Make 'trace' or 'trace_fields' sort key
default for tracepoint events") makes 'trace' sort key as a default
while displaying report for tracepoint.
As tracepoint(kvm_hv:kvm_guest_exit) is used as a default event for
recording data, perf kvm report will display output as a list of
tracepoint hits and not with a normal report columns.
This patch will replace 'overhead,comm,dso,sym' fields instead of 'trace'
while displaying perf kvm report on powerpc.
Before applying patch:
$ ./perf kvm --guestkallsyms=guest.kallsyms --guestmodules=guest.modules report --stdio
# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 181K of event 'kvm_hv:kvm_guest_exit'
# Event count (approx.): 181061
#
# Overhead Trace output
# ........ .................................................................................
#
0.02% VCPU 8: trap=HV_DECREMENTER pc=0xc000000000091924 msr=0x8000000000009032, ceded=0
0.00% VCPU 0: trap=HV_DECREMENTER pc=0xc000000000091924 msr=0x8000000000009032, ceded=0
0.00% VCPU 8: trap=HV_DECREMENTER pc=0x10005c7c msr=0x800000000280f032, ceded=0
0.00% VCPU 8: trap=HV_DECREMENTER pc=0x1001ef14 msr=0x800000000280f032, ceded=0
0.00% VCPU 8: trap=HV_DECREMENTER pc=0x3fff83398830 msr=0x800000000280f032, ceded=0
0.00% VCPU 8: trap=HV_DECREMENTER pc=0x3fff833a6fe4 msr=0x800000000280f032, ceded=0
0.00% VCPU 8: trap=HV_DECREMENTER pc=0x3fff833a7a64 msr=0x800000000280f032, ceded=0
After applying patch:
$ ./perf kvm --guestkallsyms=guest.kallsyms --guestmodules=guest.modules report --stdio
# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 181K of event 'kvm_hv:kvm_guest_exit'
# Event count (approx.): 181061
#
# Overhead Command Shared Object Symbol
# ........ ....... ....................... ..............................
#
0.02% :57276 [guest.kernel.kallsyms] [g] .plpar_hcall_norets
0.00% :57274 [guest.kernel.kallsyms] [g] .plpar_hcall_norets
0.00% :57276 [guest.kernel.kallsyms] [g] .__copy_tofrom_user_power7
0.00% :57276 [guest.kernel.kallsyms] [g] ._atomic_dec_and_lock
0.00% :57276 [guest.kernel.kallsyms] [g] ._raw_spin_lock
0.00% :57276 [guest.kernel.kallsyms] [g] ._switch
0.00% :57276 [guest.kernel.kallsyms] [g] .bio_add_page
0.00% :57276 [guest.kernel.kallsyms] [g] .kmem_cache_alloc
Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
---
changes in v2:
- Fixes output format of perf kvm report on powerpc
tools/perf/arch/powerpc/util/kvm.c | 30 ++++++++++++++++++++++++++++++
tools/perf/builtin-kvm.c | 23 +++++++++++++++++------
tools/perf/builtin.h | 3 +++
3 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/tools/perf/arch/powerpc/util/kvm.c b/tools/perf/arch/powerpc/util/kvm.c
index 317f29a..e5d88cc 100644
--- a/tools/perf/arch/powerpc/util/kvm.c
+++ b/tools/perf/arch/powerpc/util/kvm.c
@@ -8,11 +8,13 @@
*/
#include <linux/err.h>
+#include <string.h>
#include "../../../util/evsel.h"
#include "../../../util/evlist.h"
#include "../../../util/trace-event.h"
#include "../../../util/session.h"
#include "../../../util/util.h"
+#include "../../../builtin.h"
#define KVMPPC_EXIT "kvm_hv:kvm_guest_exit"
#define HV_DECREMENTER 2432
@@ -102,3 +104,31 @@ u8 arch__get_cpumode(const union perf_event *event, struct perf_evsel *evsel,
ret:
return cpumode;
}
+
+const char **arch__cmd_kvm_report_argv(const char *file_name, int argc,
+ int *rec_argc, const char **argv)
+{
+ int i = 0, j, arch_argc = 0;
+ const char **rec_argv;
+
+ if (perf_guest_only())
+ arch_argc = 2;
+
+ *rec_argc = argc + arch_argc + 2;
+ rec_argv = calloc(*rec_argc + 1, sizeof(char *));
+ rec_argv[i++] = strdup("report");
+ rec_argv[i++] = strdup("-i");
+ rec_argv[i++] = strdup(file_name);
+
+ if (arch_argc) {
+ rec_argv[i++] = strdup("-F");
+ rec_argv[i++] = strdup("overhead,comm,dso,sym");
+ }
+
+ for (j = 1; j < argc; j++, i++)
+ rec_argv[i] = argv[j];
+
+ BUG_ON(i != *rec_argc);
+
+ return rec_argv;
+}
diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
index 4418d92..48455c9 100644
--- a/tools/perf/builtin-kvm.c
+++ b/tools/perf/builtin-kvm.c
@@ -1480,22 +1480,33 @@ static int __cmd_record(const char *file_name, int argc, const char **argv)
return cmd_record(i, rec_argv, NULL);
}
-static int __cmd_report(const char *file_name, int argc, const char **argv)
+
+const char ** __weak arch__cmd_kvm_report_argv(const char *file_name, int argc,
+ int *rec_argc, const char **argv)
{
- int rec_argc, i = 0, j;
+ int i = 0, j;
const char **rec_argv;
- rec_argc = argc + 2;
- rec_argv = calloc(rec_argc + 1, sizeof(char *));
+ *rec_argc = argc + 2;
+ rec_argv = calloc(*rec_argc + 1, sizeof(char *));
rec_argv[i++] = strdup("report");
rec_argv[i++] = strdup("-i");
rec_argv[i++] = strdup(file_name);
for (j = 1; j < argc; j++, i++)
rec_argv[i] = argv[j];
- BUG_ON(i != rec_argc);
+ BUG_ON(i != *rec_argc);
+
+ return rec_argv;
+}
+
+static int __cmd_report(const char *file_name, int argc, const char **argv)
+{
+ int rec_argc;
+ const char **rec_argv = arch__cmd_kvm_report_argv(file_name, argc,
+ &rec_argc, argv);
- return cmd_report(i, rec_argv, NULL);
+ return cmd_report(rec_argc, rec_argv, NULL);
}
static int
diff --git a/tools/perf/builtin.h b/tools/perf/builtin.h
index 3f871b5..2ac149b 100644
--- a/tools/perf/builtin.h
+++ b/tools/perf/builtin.h
@@ -41,4 +41,7 @@ extern int cmd_mem(int argc, const char **argv, const char *prefix);
extern int cmd_data(int argc, const char **argv, const char *prefix);
extern int find_scripts(char **scripts_array, char **scripts_path_array);
+
+extern const char **arch__cmd_kvm_report_argv(const char *file_name,
+ int argc, int *rec_argc, const char **argv);
#endif
--
2.1.4
prev parent reply other threads:[~2016-01-22 6:00 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-22 5:58 [PATCH v2 0/3] perf kvm: Guest Symbol Resolution for powerpc Ravi Bangoria
2016-01-22 5:58 ` [PATCH v2 1/3] perf kvm: Introduce evsel as argument to perf_event__preprocess_sample Ravi Bangoria
2016-02-01 20:53 ` Arnaldo Carvalho de Melo
2016-02-02 9:07 ` Ravi Bangoria
2016-01-22 5:58 ` [PATCH v2 2/3] perf kvm: enable record|report feature on powerpc Ravi Bangoria
2016-02-01 21:06 ` Arnaldo Carvalho de Melo
2016-02-02 9:06 ` Ravi Bangoria
2016-02-09 10:47 ` Ravi Bangoria
2016-01-22 5:58 ` Ravi Bangoria [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=1453442292-7790-4-git-send-email-ravi.bangoria@linux.vnet.ibm.com \
--to=ravi.bangoria@linux.vnet.ibm.com \
--cc=acme@kernel.org \
--cc=hemant@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=naveen.n.rao@linux.vnet.ibm.com \
--cc=peterz@infradead.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).