* [GIT PULL 00/25] perf/core improvements and fixes
@ 2013-01-31 17:25 Arnaldo Carvalho de Melo
2013-01-31 17:25 ` [PATCH 21/25] perf/Power7: Use macros to identify perf events Arnaldo Carvalho de Melo
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-01-31 17:25 UTC (permalink / raw)
To: Ingo Molnar
Cc: Arnaldo Carvalho de Melo, Arnaldo Carvalho de Melo,
Robert Richter, Andi Kleen, Peter Zijlstra, Frederic Weisbecker,
Namhyung Kim, Anton Blanchard, linux-kernel, Stephane Eranian,
Pekka Enberg, linuxppc-dev, Paul Mackerras, Mike Galbraith, acme,
David Ahern, Namhyung Kim, Sukadev Bhattiprolu, Jiri Olsa
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 152fefa921535665f95840c08062844ab2f5593e:
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-01-31 10:20:14 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
for you to fetch changes up to 2ac3634a7e1c8eedc961030c87c5c36ebd5bbf8e:
perf: Document the ABI of perf sysfs entries (2013-01-31 13:07:51 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
. Make some POWER7 events available in sysfs, equivalent to
what was done on x86, from Sukadev Bhattiprolu.
. Add event group view, from Namyung Kim:
To use it, 'perf record' should group events when recording. And then perf
report parses the saved group relation from file header and prints them
together if --group option is provided. You can use 'perf evlist' command to
see event group information:
$ perf record -e '{ref-cycles,cycles}' noploop 1
[ perf record: Woken up 2 times to write data ]
[ perf record: Captured and wrote 0.385 MB perf.data (~16807 samples) ]
$ perf evlist --group
{ref-cycles,cycles}
With this example, default perf report will show you each event
separately like this:
$ perf report
...
# group: {ref-cycles,cycles}
# ========
# Samples: 3K of event 'ref-cycles'
# Event count (approx.): 3153797218
#
# Overhead Command Shared Object Symbol
# ........ ....... ................. ..........................
99.84% noploop noploop [.] main
0.07% noploop ld-2.15.so [.] strcmp
0.03% noploop [kernel.kallsyms] [k] timerqueue_del
0.03% noploop [kernel.kallsyms] [k] sched_clock_cpu
0.02% noploop [kernel.kallsyms] [k] account_user_time
0.01% noploop [kernel.kallsyms] [k] __alloc_pages_nodemask
0.00% noploop [kernel.kallsyms] [k] native_write_msr_safe
# Samples: 3K of event 'cycles'
# Event count (approx.): 3722310525
#
# Overhead Command Shared Object Symbol
# ........ ....... ................. .........................
99.76% noploop noploop [.] main
0.11% noploop [kernel.kallsyms] [k] _raw_spin_lock
0.06% noploop [kernel.kallsyms] [k] find_get_page
0.03% noploop [kernel.kallsyms] [k] sched_clock_cpu
0.02% noploop [kernel.kallsyms] [k] rcu_check_callbacks
0.02% noploop [kernel.kallsyms] [k] __current_kernel_time
0.00% noploop [kernel.kallsyms] [k] native_write_msr_safe
In this case the event group information will be shown in the end of
header area. So you can use --group option to enable event group view.
$ perf report --group
...
# group: {ref-cycles,cycles}
# ========
# Samples: 7K of event 'anon group { ref-cycles, cycles }'
# Event count (approx.): 6876107743
#
# Overhead Command Shared Object Symbol
# ................ ....... ................. ..........................
99.84% 99.76% noploop noploop [.] main
0.07% 0.00% noploop ld-2.15.so [.] strcmp
0.03% 0.00% noploop [kernel.kallsyms] [k] timerqueue_del
0.03% 0.03% noploop [kernel.kallsyms] [k] sched_clock_cpu
0.02% 0.00% noploop [kernel.kallsyms] [k] account_user_time
0.01% 0.00% noploop [kernel.kallsyms] [k] __alloc_pages_nodemask
0.00% 0.00% noploop [kernel.kallsyms] [k] native_write_msr_safe
0.00% 0.11% noploop [kernel.kallsyms] [k] _raw_spin_lock
0.00% 0.06% noploop [kernel.kallsyms] [k] find_get_page
0.00% 0.02% noploop [kernel.kallsyms] [k] rcu_check_callbacks
0.00% 0.02% noploop [kernel.kallsyms] [k] __current_kernel_time
As you can see the Overhead column now contains both of ref-cycles and
cycles and header line shows group information also - 'anon group {
ref-cycles, cycles }'. The output is sorted by period of group leader
first.
If perf.data file doesn't contain group information, this --group
option does nothing. So if you want enable event group view by
default you can set it in ~/.perfconfig file:
$ cat ~/.perfconfig
[report]
group = true
It can be overridden with command line if you want:
$ perf report --no-group
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (2):
perf top: Stop using exit()
perf top: Delete maps on exit
Namhyung Kim (18):
perf tools: Keep group information
perf tests: Add group test conditions
perf header: Add HEADER_GROUP_DESC feature
perf report: Make another loop for linking group hists
perf hists: Resort hist entries using group members for output
perf ui/hist: Consolidate hpp helpers
perf hists browser: Convert hpp helpers to a function
perf gtk/browser: Convert hpp helpers to a function
perf ui/hist: Add support for event group view
perf hists browser: Move coloring logic to hpp functions
perf hists browser: Add suppport for event group view
perf gtk/browser: Add support for event group view
perf gtk/browser: Trim column header string when event group enabled
perf report: Bypass non-leader events when event group is enabled
perf report: Show group description when event group is enabled
perf report: Add --group option
perf report: Add report.group config option
perf evlist: Add --group option
Sukadev Bhattiprolu (5):
perf/Power7: Use macros to identify perf events
perf: Make EVENT_ATTR global
perf/POWER7: Make generic event translations available in sysfs
perf/POWER7: Make some POWER7 events available in sysfs
perf: Document the ABI of perf sysfs entries
.../testing/sysfs-bus-event_source-devices-events | 62 +++++
arch/powerpc/include/asm/perf_event_server.h | 26 ++
arch/powerpc/perf/core-book3s.c | 12 +
arch/powerpc/perf/power7-pmu.c | 80 +++++-
arch/x86/kernel/cpu/perf_event.c | 13 +-
include/linux/perf_event.h | 11 +
tools/perf/Documentation/perf-evlist.txt | 4 +
tools/perf/Documentation/perf-report.txt | 3 +
tools/perf/builtin-evlist.c | 7 +
tools/perf/builtin-record.c | 3 +
tools/perf/builtin-report.c | 47 +++-
tools/perf/builtin-top.c | 62 +++--
tools/perf/tests/parse-events.c | 28 ++
tools/perf/ui/browsers/hists.c | 217 ++++++++++++---
tools/perf/ui/gtk/hists.c | 130 +++++++--
tools/perf/ui/hist.c | 306 ++++++++++-----------
tools/perf/ui/stdio/hist.c | 2 +
tools/perf/util/evlist.c | 7 +-
tools/perf/util/evlist.h | 1 +
tools/perf/util/evsel.c | 49 +++-
tools/perf/util/evsel.h | 16 ++
tools/perf/util/header.c | 164 +++++++++++
tools/perf/util/header.h | 2 +
tools/perf/util/hist.c | 59 +++-
tools/perf/util/parse-events.c | 1 +
tools/perf/util/parse-events.h | 1 +
tools/perf/util/parse-events.y | 10 +
tools/perf/util/symbol.h | 3 +-
28 files changed, 1059 insertions(+), 267 deletions(-)
create mode 100644 Documentation/ABI/testing/sysfs-bus-event_source-devices-events
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 21/25] perf/Power7: Use macros to identify perf events
2013-01-31 17:25 [GIT PULL 00/25] perf/core improvements and fixes Arnaldo Carvalho de Melo
@ 2013-01-31 17:25 ` Arnaldo Carvalho de Melo
2013-01-31 17:25 ` [PATCH 22/25] perf: Make EVENT_ATTR global Arnaldo Carvalho de Melo
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-01-31 17:25 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andi Kleen, Peter Zijlstra, Robert Richter, Anton Blanchard,
linux-kernel, Stephane Eranian, Arnaldo Carvalho de Melo,
linuxppc-dev, Ingo Molnar, Paul Mackerras, Sukadev Bhattiprolu,
Jiri Olsa
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Define and use macros to identify perf events codes This would make it
easier and more readable when these event codes need to be used in more
than one place.
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Anton Blanchard <anton@au1.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: linuxppc-dev@ozlabs.org
Link: http://lkml.kernel.org/r/20130123062353.GB13720@us.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
arch/powerpc/perf/power7-pmu.c | 28 ++++++++++++++++++++--------
1 file changed, 20 insertions(+), 8 deletions(-)
diff --git a/arch/powerpc/perf/power7-pmu.c b/arch/powerpc/perf/power7-pmu.c
index 2ee01e3..eebb36d 100644
--- a/arch/powerpc/perf/power7-pmu.c
+++ b/arch/powerpc/perf/power7-pmu.c
@@ -51,6 +51,18 @@
#define MMCR1_PMCSEL_MSK 0xff
/*
+ * Power7 event codes.
+ */
+#define PME_PM_CYC 0x1e
+#define PME_PM_GCT_NOSLOT_CYC 0x100f8
+#define PME_PM_CMPLU_STALL 0x4000a
+#define PME_PM_INST_CMPL 0x2
+#define PME_PM_LD_REF_L1 0xc880
+#define PME_PM_LD_MISS_L1 0x400f0
+#define PME_PM_BRU_FIN 0x10068
+#define PME_PM_BRU_MPRED 0x400f6
+
+/*
* Layout of constraint bits:
* 6666555555555544444444443333333333222222222211111111110000000000
* 3210987654321098765432109876543210987654321098765432109876543210
@@ -307,14 +319,14 @@ static void power7_disable_pmc(unsigned int pmc, unsigned long mmcr[])
}
static int power7_generic_events[] = {
- [PERF_COUNT_HW_CPU_CYCLES] = 0x1e,
- [PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] = 0x100f8, /* GCT_NOSLOT_CYC */
- [PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = 0x4000a, /* CMPLU_STALL */
- [PERF_COUNT_HW_INSTRUCTIONS] = 2,
- [PERF_COUNT_HW_CACHE_REFERENCES] = 0xc880, /* LD_REF_L1_LSU*/
- [PERF_COUNT_HW_CACHE_MISSES] = 0x400f0, /* LD_MISS_L1 */
- [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = 0x10068, /* BRU_FIN */
- [PERF_COUNT_HW_BRANCH_MISSES] = 0x400f6, /* BR_MPRED */
+ [PERF_COUNT_HW_CPU_CYCLES] = PME_PM_CYC,
+ [PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] = PME_PM_GCT_NOSLOT_CYC,
+ [PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = PME_PM_CMPLU_STALL,
+ [PERF_COUNT_HW_INSTRUCTIONS] = PME_PM_INST_CMPL,
+ [PERF_COUNT_HW_CACHE_REFERENCES] = PME_PM_LD_REF_L1,
+ [PERF_COUNT_HW_CACHE_MISSES] = PME_PM_LD_MISS_L1,
+ [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = PME_PM_BRU_FIN,
+ [PERF_COUNT_HW_BRANCH_MISSES] = PME_PM_BRU_MPRED,
};
#define C(x) PERF_COUNT_HW_CACHE_##x
--
1.8.1.1.361.gec3ae6e
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 22/25] perf: Make EVENT_ATTR global
2013-01-31 17:25 [GIT PULL 00/25] perf/core improvements and fixes Arnaldo Carvalho de Melo
2013-01-31 17:25 ` [PATCH 21/25] perf/Power7: Use macros to identify perf events Arnaldo Carvalho de Melo
@ 2013-01-31 17:25 ` Arnaldo Carvalho de Melo
2013-02-01 10:26 ` Ingo Molnar
2013-01-31 17:25 ` [PATCH 23/25] perf/POWER7: Make generic event translations available in sysfs Arnaldo Carvalho de Melo
` (3 subsequent siblings)
5 siblings, 1 reply; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-01-31 17:25 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andi Kleen, Peter Zijlstra, Robert Richter, Anton Blanchard,
linux-kernel, Stephane Eranian, Arnaldo Carvalho de Melo,
linuxppc-dev, Ingo Molnar, Paul Mackerras, Sukadev Bhattiprolu,
Jiri Olsa
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Rename EVENT_ATTR() to PMU_EVENT_ATTR() and make it global so it is
available to all architectures.
Further to allow architectures flexibility, have PMU_EVENT_ATTR() pass
in the variable name as a parameter.
Changelog[v2]
- [Jiri Olsa] No need to define PMU_EVENT_PTR()
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Anton Blanchard <anton@au1.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: linuxppc-dev@ozlabs.org
Link: http://lkml.kernel.org/r/20130123062422.GC13720@us.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
arch/x86/kernel/cpu/perf_event.c | 13 +++----------
include/linux/perf_event.h | 11 +++++++++++
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index 6774c17..c0df5ed2 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -1310,11 +1310,6 @@ static struct attribute_group x86_pmu_format_group = {
.attrs = NULL,
};
-struct perf_pmu_events_attr {
- struct device_attribute attr;
- u64 id;
-};
-
/*
* Remove all undefined events (x86_pmu.event_map(id) == 0)
* out of events_attr attributes.
@@ -1348,11 +1343,9 @@ static ssize_t events_sysfs_show(struct device *dev, struct device_attribute *at
#define EVENT_VAR(_id) event_attr_##_id
#define EVENT_PTR(_id) &event_attr_##_id.attr.attr
-#define EVENT_ATTR(_name, _id) \
-static struct perf_pmu_events_attr EVENT_VAR(_id) = { \
- .attr = __ATTR(_name, 0444, events_sysfs_show, NULL), \
- .id = PERF_COUNT_HW_##_id, \
-};
+#define EVENT_ATTR(_name, _id) \
+ PMU_EVENT_ATTR(_name, EVENT_VAR(_id), PERF_COUNT_HW_##_id, \
+ events_sysfs_show)
EVENT_ATTR(cpu-cycles, CPU_CYCLES );
EVENT_ATTR(instructions, INSTRUCTIONS );
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 6bfb2faa..42adf01 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -817,6 +817,17 @@ do { \
} while (0)
+struct perf_pmu_events_attr {
+ struct device_attribute attr;
+ u64 id;
+};
+
+#define PMU_EVENT_ATTR(_name, _var, _id, _show) \
+static struct perf_pmu_events_attr _var = { \
+ .attr = __ATTR(_name, 0444, _show, NULL), \
+ .id = _id, \
+};
+
#define PMU_FORMAT_ATTR(_name, _format) \
static ssize_t \
_name##_show(struct device *dev, \
--
1.8.1.1.361.gec3ae6e
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 23/25] perf/POWER7: Make generic event translations available in sysfs
2013-01-31 17:25 [GIT PULL 00/25] perf/core improvements and fixes Arnaldo Carvalho de Melo
2013-01-31 17:25 ` [PATCH 21/25] perf/Power7: Use macros to identify perf events Arnaldo Carvalho de Melo
2013-01-31 17:25 ` [PATCH 22/25] perf: Make EVENT_ATTR global Arnaldo Carvalho de Melo
@ 2013-01-31 17:25 ` Arnaldo Carvalho de Melo
2013-01-31 17:25 ` [PATCH 24/25] perf/POWER7: Make some POWER7 events " Arnaldo Carvalho de Melo
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-01-31 17:25 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andi Kleen, Peter Zijlstra, Robert Richter, Anton Blanchard,
linux-kernel, Stephane Eranian, Arnaldo Carvalho de Melo,
linuxppc-dev, Ingo Molnar, Paul Mackerras, Sukadev Bhattiprolu,
Jiri Olsa
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Make the generic perf events in POWER7 available via sysfs.
$ ls /sys/bus/event_source/devices/cpu/events
branch-instructions
branch-misses
cache-misses
cache-references
cpu-cycles
instructions
stalled-cycles-backend
stalled-cycles-frontend
$ cat /sys/bus/event_source/devices/cpu/events/cache-misses
event=0x400f0
This patch is based on commits that implement this functionality on x86.
Eg:
commit a47473939db20e3961b200eb00acf5fcf084d755
Author: Jiri Olsa <jolsa@redhat.com>
Date: Wed Oct 10 14:53:11 2012 +0200
perf/x86: Make hardware event translations available in sysfs
Changelog:[v2]
[Jiri Osla] Drop EVENT_ID() macro since it is only used once.
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Anton Blanchard <anton@au1.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: linuxppc-dev@ozlabs.org
Link: http://lkml.kernel.org/r/20130123062454.GD13720@us.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
Documentation/ABI/stable/sysfs-devices-cpu-events | 0
arch/powerpc/include/asm/perf_event_server.h | 23 +++++++++++++++
arch/powerpc/perf/core-book3s.c | 12 ++++++++
arch/powerpc/perf/power7-pmu.c | 34 +++++++++++++++++++++++
4 files changed, 69 insertions(+)
create mode 100644 Documentation/ABI/stable/sysfs-devices-cpu-events
diff --git a/Documentation/ABI/stable/sysfs-devices-cpu-events b/Documentation/ABI/stable/sysfs-devices-cpu-events
new file mode 100644
index 0000000..e69de29
diff --git a/arch/powerpc/include/asm/perf_event_server.h b/arch/powerpc/include/asm/perf_event_server.h
index 9710be3..b9b6c55 100644
--- a/arch/powerpc/include/asm/perf_event_server.h
+++ b/arch/powerpc/include/asm/perf_event_server.h
@@ -11,6 +11,7 @@
#include <linux/types.h>
#include <asm/hw_irq.h>
+#include <linux/device.h>
#define MAX_HWEVENTS 8
#define MAX_EVENT_ALTERNATIVES 8
@@ -35,6 +36,7 @@ struct power_pmu {
void (*disable_pmc)(unsigned int pmc, unsigned long mmcr[]);
int (*limited_pmc_event)(u64 event_id);
u32 flags;
+ const struct attribute_group **attr_groups;
int n_generic;
int *generic_events;
int (*cache_events)[PERF_COUNT_HW_CACHE_MAX]
@@ -109,3 +111,24 @@ extern unsigned long perf_instruction_pointer(struct pt_regs *regs);
* If an event_id is not subject to the constraint expressed by a particular
* field, then it will have 0 in both the mask and value for that field.
*/
+
+extern ssize_t power_events_sysfs_show(struct device *dev,
+ struct device_attribute *attr, char *page);
+
+/*
+ * EVENT_VAR() is same as PMU_EVENT_VAR with a suffix.
+ *
+ * Having a suffix allows us to have aliases in sysfs - eg: the generic
+ * event 'cpu-cycles' can have two entries in sysfs: 'cpu-cycles' and
+ * 'PM_CYC' where the latter is the name by which the event is known in
+ * POWER CPU specification.
+ */
+#define EVENT_VAR(_id, _suffix) event_attr_##_id##_suffix
+#define EVENT_PTR(_id, _suffix) &EVENT_VAR(_id, _suffix)
+
+#define EVENT_ATTR(_name, _id, _suffix) \
+ PMU_EVENT_ATTR(_name, EVENT_VAR(_id, _suffix), PME_PM_##_id, \
+ power_events_sysfs_show)
+
+#define GENERIC_EVENT_ATTR(_name, _id) EVENT_ATTR(_name, _id, _g)
+#define GENERIC_EVENT_PTR(_id) EVENT_PTR(_id, _g)
diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
index aa2465e..fa476d5 100644
--- a/arch/powerpc/perf/core-book3s.c
+++ b/arch/powerpc/perf/core-book3s.c
@@ -1305,6 +1305,16 @@ static int power_pmu_event_idx(struct perf_event *event)
return event->hw.idx;
}
+ssize_t power_events_sysfs_show(struct device *dev,
+ struct device_attribute *attr, char *page)
+{
+ struct perf_pmu_events_attr *pmu_attr;
+
+ pmu_attr = container_of(attr, struct perf_pmu_events_attr, attr);
+
+ return sprintf(page, "event=0x%02llx\n", pmu_attr->id);
+}
+
struct pmu power_pmu = {
.pmu_enable = power_pmu_enable,
.pmu_disable = power_pmu_disable,
@@ -1537,6 +1547,8 @@ int __cpuinit register_power_pmu(struct power_pmu *pmu)
pr_info("%s performance monitor hardware support registered\n",
pmu->name);
+ power_pmu.attr_groups = ppmu->attr_groups;
+
#ifdef MSR_HV
/*
* Use FCHV to ignore kernel events if MSR.HV is set.
diff --git a/arch/powerpc/perf/power7-pmu.c b/arch/powerpc/perf/power7-pmu.c
index eebb36d..269bf24 100644
--- a/arch/powerpc/perf/power7-pmu.c
+++ b/arch/powerpc/perf/power7-pmu.c
@@ -374,6 +374,39 @@ static int power7_cache_events[C(MAX)][C(OP_MAX)][C(RESULT_MAX)] = {
},
};
+
+GENERIC_EVENT_ATTR(cpu-cycles, CYC);
+GENERIC_EVENT_ATTR(stalled-cycles-frontend, GCT_NOSLOT_CYC);
+GENERIC_EVENT_ATTR(stalled-cycles-backend, CMPLU_STALL);
+GENERIC_EVENT_ATTR(instructions, INST_CMPL);
+GENERIC_EVENT_ATTR(cache-references, LD_REF_L1);
+GENERIC_EVENT_ATTR(cache-misses, LD_MISS_L1);
+GENERIC_EVENT_ATTR(branch-instructions, BRU_FIN);
+GENERIC_EVENT_ATTR(branch-misses, BRU_MPRED);
+
+static struct attribute *power7_events_attr[] = {
+ GENERIC_EVENT_PTR(CYC),
+ GENERIC_EVENT_PTR(GCT_NOSLOT_CYC),
+ GENERIC_EVENT_PTR(CMPLU_STALL),
+ GENERIC_EVENT_PTR(INST_CMPL),
+ GENERIC_EVENT_PTR(LD_REF_L1),
+ GENERIC_EVENT_PTR(LD_MISS_L1),
+ GENERIC_EVENT_PTR(BRU_FIN),
+ GENERIC_EVENT_PTR(BRU_MPRED),
+ NULL
+};
+
+
+static struct attribute_group power7_pmu_events_group = {
+ .name = "events",
+ .attrs = power7_events_attr,
+};
+
+static const struct attribute_group *power7_pmu_attr_groups[] = {
+ &power7_pmu_events_group,
+ NULL,
+};
+
static struct power_pmu power7_pmu = {
.name = "POWER7",
.n_counter = 6,
@@ -385,6 +418,7 @@ static struct power_pmu power7_pmu = {
.get_alternatives = power7_get_alternatives,
.disable_pmc = power7_disable_pmc,
.flags = PPMU_ALT_SIPR,
+ .attr_groups = power7_pmu_attr_groups,
.n_generic = ARRAY_SIZE(power7_generic_events),
.generic_events = power7_generic_events,
.cache_events = &power7_cache_events,
--
1.8.1.1.361.gec3ae6e
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 24/25] perf/POWER7: Make some POWER7 events available in sysfs
2013-01-31 17:25 [GIT PULL 00/25] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (2 preceding siblings ...)
2013-01-31 17:25 ` [PATCH 23/25] perf/POWER7: Make generic event translations available in sysfs Arnaldo Carvalho de Melo
@ 2013-01-31 17:25 ` Arnaldo Carvalho de Melo
2013-01-31 17:25 ` [PATCH 25/25] perf: Document the ABI of perf sysfs entries Arnaldo Carvalho de Melo
2013-02-01 10:18 ` [GIT PULL 00/25] perf/core improvements and fixes Ingo Molnar
5 siblings, 0 replies; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-01-31 17:25 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andi Kleen, Peter Zijlstra, Robert Richter, Anton Blanchard,
linux-kernel, Stephane Eranian, Arnaldo Carvalho de Melo,
linuxppc-dev, Ingo Molnar, Paul Mackerras, Sukadev Bhattiprolu,
Jiri Olsa
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Make some POWER7-specific perf events available in sysfs.
$ /bin/ls -1 /sys/bus/event_source/devices/cpu/events/
branch-instructions
branch-misses
cache-misses
cache-references
cpu-cycles
instructions
PM_BRU_FIN
PM_BRU_MPRED
PM_CMPLU_STALL
PM_CYC
PM_GCT_NOSLOT_CYC
PM_INST_CMPL
PM_LD_MISS_L1
PM_LD_REF_L1
stalled-cycles-backend
stalled-cycles-frontend
where the 'PM_*' events are POWER specific and the others are the
generic events.
This will enable users to specify these events with their symbolic
names rather than with their raw code.
perf stat -e 'cpu/PM_CYC' ...
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Anton Blanchard <anton@au1.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: linuxppc-dev@ozlabs.org
Link: http://lkml.kernel.org/r/20130123062528.GE13720@us.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
arch/powerpc/include/asm/perf_event_server.h | 3 +++
arch/powerpc/perf/power7-pmu.c | 18 ++++++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/arch/powerpc/include/asm/perf_event_server.h b/arch/powerpc/include/asm/perf_event_server.h
index b9b6c55..b29fcc6 100644
--- a/arch/powerpc/include/asm/perf_event_server.h
+++ b/arch/powerpc/include/asm/perf_event_server.h
@@ -132,3 +132,6 @@ extern ssize_t power_events_sysfs_show(struct device *dev,
#define GENERIC_EVENT_ATTR(_name, _id) EVENT_ATTR(_name, _id, _g)
#define GENERIC_EVENT_PTR(_id) EVENT_PTR(_id, _g)
+
+#define POWER_EVENT_ATTR(_name, _id) EVENT_ATTR(PM_##_name, _id, _p)
+#define POWER_EVENT_PTR(_id) EVENT_PTR(_id, _p)
diff --git a/arch/powerpc/perf/power7-pmu.c b/arch/powerpc/perf/power7-pmu.c
index 269bf24..b554879 100644
--- a/arch/powerpc/perf/power7-pmu.c
+++ b/arch/powerpc/perf/power7-pmu.c
@@ -384,6 +384,15 @@ GENERIC_EVENT_ATTR(cache-misses, LD_MISS_L1);
GENERIC_EVENT_ATTR(branch-instructions, BRU_FIN);
GENERIC_EVENT_ATTR(branch-misses, BRU_MPRED);
+POWER_EVENT_ATTR(CYC, CYC);
+POWER_EVENT_ATTR(GCT_NOSLOT_CYC, GCT_NOSLOT_CYC);
+POWER_EVENT_ATTR(CMPLU_STALL, CMPLU_STALL);
+POWER_EVENT_ATTR(INST_CMPL, INST_CMPL);
+POWER_EVENT_ATTR(LD_REF_L1, LD_REF_L1);
+POWER_EVENT_ATTR(LD_MISS_L1, LD_MISS_L1);
+POWER_EVENT_ATTR(BRU_FIN, BRU_FIN)
+POWER_EVENT_ATTR(BRU_MPRED, BRU_MPRED);
+
static struct attribute *power7_events_attr[] = {
GENERIC_EVENT_PTR(CYC),
GENERIC_EVENT_PTR(GCT_NOSLOT_CYC),
@@ -393,6 +402,15 @@ static struct attribute *power7_events_attr[] = {
GENERIC_EVENT_PTR(LD_MISS_L1),
GENERIC_EVENT_PTR(BRU_FIN),
GENERIC_EVENT_PTR(BRU_MPRED),
+
+ POWER_EVENT_PTR(CYC),
+ POWER_EVENT_PTR(GCT_NOSLOT_CYC),
+ POWER_EVENT_PTR(CMPLU_STALL),
+ POWER_EVENT_PTR(INST_CMPL),
+ POWER_EVENT_PTR(LD_REF_L1),
+ POWER_EVENT_PTR(LD_MISS_L1),
+ POWER_EVENT_PTR(BRU_FIN),
+ POWER_EVENT_PTR(BRU_MPRED),
NULL
};
--
1.8.1.1.361.gec3ae6e
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 25/25] perf: Document the ABI of perf sysfs entries
2013-01-31 17:25 [GIT PULL 00/25] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (3 preceding siblings ...)
2013-01-31 17:25 ` [PATCH 24/25] perf/POWER7: Make some POWER7 events " Arnaldo Carvalho de Melo
@ 2013-01-31 17:25 ` Arnaldo Carvalho de Melo
2013-02-01 10:18 ` [GIT PULL 00/25] perf/core improvements and fixes Ingo Molnar
5 siblings, 0 replies; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-01-31 17:25 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andi Kleen, Peter Zijlstra, Robert Richter, Anton Blanchard,
linux-kernel, Stephane Eranian, Arnaldo Carvalho de Melo,
linuxppc-dev, Ingo Molnar, Paul Mackerras, Sukadev Bhattiprolu,
Jiri Olsa
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
This patchset addes two new sets of files to sysfs for POWER architecture.
- perf event config format in /sys/devices/cpu/format/event
- generic and POWER-specific perf events in /sys/devices/cpu/events/
The format of the first file is already documented in:
sysfs-bus-event_source-devices-format
Document the format of the second set of files '/sys/devices/cpu/events/*'
which would also become part of the ABI.
Changelog[v4]:
[Jiri Olsa]: Mention that multiple event= like terms can be specified
in the 'events' file.
[Jiri Olsa]: Remove the documentation for the 'config format' file
as it is already documented in 'Documentation/ABI/testing/'.
[Jiri Olsa]: Move ABI documentation from 'stable/' to 'testing/'
Changelog[v3]:
[Greg KH] Include ABI documentation.
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Anton Blanchard <anton@au1.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: linuxppc-dev@ozlabs.org
Link: http://lkml.kernel.org/r/20130123062645.GG13720@us.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
Documentation/ABI/stable/sysfs-devices-cpu-events | 0
.../testing/sysfs-bus-event_source-devices-events | 62 ++++++++++++++++++++++
2 files changed, 62 insertions(+)
delete mode 100644 Documentation/ABI/stable/sysfs-devices-cpu-events
create mode 100644 Documentation/ABI/testing/sysfs-bus-event_source-devices-events
diff --git a/Documentation/ABI/stable/sysfs-devices-cpu-events b/Documentation/ABI/stable/sysfs-devices-cpu-events
deleted file mode 100644
index e69de29..0000000
diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-events b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events
new file mode 100644
index 0000000..0adeb52
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events
@@ -0,0 +1,62 @@
+What: /sys/devices/cpu/events/
+ /sys/devices/cpu/events/branch-misses
+ /sys/devices/cpu/events/cache-references
+ /sys/devices/cpu/events/cache-misses
+ /sys/devices/cpu/events/stalled-cycles-frontend
+ /sys/devices/cpu/events/branch-instructions
+ /sys/devices/cpu/events/stalled-cycles-backend
+ /sys/devices/cpu/events/instructions
+ /sys/devices/cpu/events/cpu-cycles
+
+Date: 2013/01/08
+
+Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
+
+Description: Generic performance monitoring events
+
+ A collection of performance monitoring events that may be
+ supported by many/most CPUs. These events can be monitored
+ using the 'perf(1)' tool.
+
+ The contents of each file would look like:
+
+ event=0xNNNN
+
+ where 'N' is a hex digit and the number '0xNNNN' shows the
+ "raw code" for the perf event identified by the file's
+ "basename".
+
+
+What: /sys/devices/cpu/events/PM_LD_MISS_L1
+ /sys/devices/cpu/events/PM_LD_REF_L1
+ /sys/devices/cpu/events/PM_CYC
+ /sys/devices/cpu/events/PM_BRU_FIN
+ /sys/devices/cpu/events/PM_GCT_NOSLOT_CYC
+ /sys/devices/cpu/events/PM_BRU_MPRED
+ /sys/devices/cpu/events/PM_INST_CMPL
+ /sys/devices/cpu/events/PM_CMPLU_STALL
+
+Date: 2013/01/08
+
+Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
+ Linux Powerpc mailing list <linuxppc-dev@ozlabs.org>
+
+Description: POWER-systems specific performance monitoring events
+
+ A collection of performance monitoring events that may be
+ supported by the POWER CPU. These events can be monitored
+ using the 'perf(1)' tool.
+
+ These events may not be supported by other CPUs.
+
+ The contents of each file would look like:
+
+ event=0xNNNN
+
+ where 'N' is a hex digit and the number '0xNNNN' shows the
+ "raw code" for the perf event identified by the file's
+ "basename".
+
+ Further, multiple terms like 'event=0xNNNN' can be specified
+ and separated with comma. All available terms are defined in
+ the /sys/bus/event_source/devices/<dev>/format file.
--
1.8.1.1.361.gec3ae6e
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [GIT PULL 00/25] perf/core improvements and fixes
2013-01-31 17:25 [GIT PULL 00/25] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (4 preceding siblings ...)
2013-01-31 17:25 ` [PATCH 25/25] perf: Document the ABI of perf sysfs entries Arnaldo Carvalho de Melo
@ 2013-02-01 10:18 ` Ingo Molnar
5 siblings, 0 replies; 10+ messages in thread
From: Ingo Molnar @ 2013-02-01 10:18 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Arnaldo Carvalho de Melo, Robert Richter, Andi Kleen,
Peter Zijlstra, Frederic Weisbecker, Namhyung Kim,
Anton Blanchard, linux-kernel, Stephane Eranian, Pekka Enberg,
linuxppc-dev, Paul Mackerras, Mike Galbraith, acme, David Ahern,
Namhyung Kim, Sukadev Bhattiprolu, Jiri Olsa
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit 152fefa921535665f95840c08062844ab2f5593e:
>
> Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-01-31 10:20:14 +0100)
>
> are available in the git repository at:
>
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
>
> for you to fetch changes up to 2ac3634a7e1c8eedc961030c87c5c36ebd5bbf8e:
>
> perf: Document the ABI of perf sysfs entries (2013-01-31 13:07:51 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> . Make some POWER7 events available in sysfs, equivalent to
> what was done on x86, from Sukadev Bhattiprolu.
>
> . Add event group view, from Namyung Kim:
>
> To use it, 'perf record' should group events when recording. And then perf
> report parses the saved group relation from file header and prints them
> together if --group option is provided. You can use 'perf evlist' command to
> see event group information:
>
> $ perf record -e '{ref-cycles,cycles}' noploop 1
> [ perf record: Woken up 2 times to write data ]
> [ perf record: Captured and wrote 0.385 MB perf.data (~16807 samples) ]
>
> $ perf evlist --group
> {ref-cycles,cycles}
>
> With this example, default perf report will show you each event
> separately like this:
>
> $ perf report
> ...
> # group: {ref-cycles,cycles}
> # ========
> # Samples: 3K of event 'ref-cycles'
> # Event count (approx.): 3153797218
> #
> # Overhead Command Shared Object Symbol
> # ........ ....... ................. ..........................
> 99.84% noploop noploop [.] main
> 0.07% noploop ld-2.15.so [.] strcmp
> 0.03% noploop [kernel.kallsyms] [k] timerqueue_del
> 0.03% noploop [kernel.kallsyms] [k] sched_clock_cpu
> 0.02% noploop [kernel.kallsyms] [k] account_user_time
> 0.01% noploop [kernel.kallsyms] [k] __alloc_pages_nodemask
> 0.00% noploop [kernel.kallsyms] [k] native_write_msr_safe
>
> # Samples: 3K of event 'cycles'
> # Event count (approx.): 3722310525
> #
> # Overhead Command Shared Object Symbol
> # ........ ....... ................. .........................
> 99.76% noploop noploop [.] main
> 0.11% noploop [kernel.kallsyms] [k] _raw_spin_lock
> 0.06% noploop [kernel.kallsyms] [k] find_get_page
> 0.03% noploop [kernel.kallsyms] [k] sched_clock_cpu
> 0.02% noploop [kernel.kallsyms] [k] rcu_check_callbacks
> 0.02% noploop [kernel.kallsyms] [k] __current_kernel_time
> 0.00% noploop [kernel.kallsyms] [k] native_write_msr_safe
>
> In this case the event group information will be shown in the end of
> header area. So you can use --group option to enable event group view.
>
> $ perf report --group
> ...
> # group: {ref-cycles,cycles}
> # ========
> # Samples: 7K of event 'anon group { ref-cycles, cycles }'
> # Event count (approx.): 6876107743
> #
> # Overhead Command Shared Object Symbol
> # ................ ....... ................. ..........................
> 99.84% 99.76% noploop noploop [.] main
> 0.07% 0.00% noploop ld-2.15.so [.] strcmp
> 0.03% 0.00% noploop [kernel.kallsyms] [k] timerqueue_del
> 0.03% 0.03% noploop [kernel.kallsyms] [k] sched_clock_cpu
> 0.02% 0.00% noploop [kernel.kallsyms] [k] account_user_time
> 0.01% 0.00% noploop [kernel.kallsyms] [k] __alloc_pages_nodemask
> 0.00% 0.00% noploop [kernel.kallsyms] [k] native_write_msr_safe
> 0.00% 0.11% noploop [kernel.kallsyms] [k] _raw_spin_lock
> 0.00% 0.06% noploop [kernel.kallsyms] [k] find_get_page
> 0.00% 0.02% noploop [kernel.kallsyms] [k] rcu_check_callbacks
> 0.00% 0.02% noploop [kernel.kallsyms] [k] __current_kernel_time
>
> As you can see the Overhead column now contains both of ref-cycles and
> cycles and header line shows group information also - 'anon group {
> ref-cycles, cycles }'. The output is sorted by period of group leader
> first.
>
> If perf.data file doesn't contain group information, this --group
> option does nothing. So if you want enable event group view by
> default you can set it in ~/.perfconfig file:
>
> $ cat ~/.perfconfig
> [report]
> group = true
>
> It can be overridden with command line if you want:
>
> $ perf report --no-group
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (2):
> perf top: Stop using exit()
> perf top: Delete maps on exit
>
> Namhyung Kim (18):
> perf tools: Keep group information
> perf tests: Add group test conditions
> perf header: Add HEADER_GROUP_DESC feature
> perf report: Make another loop for linking group hists
> perf hists: Resort hist entries using group members for output
> perf ui/hist: Consolidate hpp helpers
> perf hists browser: Convert hpp helpers to a function
> perf gtk/browser: Convert hpp helpers to a function
> perf ui/hist: Add support for event group view
> perf hists browser: Move coloring logic to hpp functions
> perf hists browser: Add suppport for event group view
> perf gtk/browser: Add support for event group view
> perf gtk/browser: Trim column header string when event group enabled
> perf report: Bypass non-leader events when event group is enabled
> perf report: Show group description when event group is enabled
> perf report: Add --group option
> perf report: Add report.group config option
> perf evlist: Add --group option
>
> Sukadev Bhattiprolu (5):
> perf/Power7: Use macros to identify perf events
> perf: Make EVENT_ATTR global
> perf/POWER7: Make generic event translations available in sysfs
> perf/POWER7: Make some POWER7 events available in sysfs
> perf: Document the ABI of perf sysfs entries
>
> .../testing/sysfs-bus-event_source-devices-events | 62 +++++
> arch/powerpc/include/asm/perf_event_server.h | 26 ++
> arch/powerpc/perf/core-book3s.c | 12 +
> arch/powerpc/perf/power7-pmu.c | 80 +++++-
> arch/x86/kernel/cpu/perf_event.c | 13 +-
> include/linux/perf_event.h | 11 +
> tools/perf/Documentation/perf-evlist.txt | 4 +
> tools/perf/Documentation/perf-report.txt | 3 +
> tools/perf/builtin-evlist.c | 7 +
> tools/perf/builtin-record.c | 3 +
> tools/perf/builtin-report.c | 47 +++-
> tools/perf/builtin-top.c | 62 +++--
> tools/perf/tests/parse-events.c | 28 ++
> tools/perf/ui/browsers/hists.c | 217 ++++++++++++---
> tools/perf/ui/gtk/hists.c | 130 +++++++--
> tools/perf/ui/hist.c | 306 ++++++++++-----------
> tools/perf/ui/stdio/hist.c | 2 +
> tools/perf/util/evlist.c | 7 +-
> tools/perf/util/evlist.h | 1 +
> tools/perf/util/evsel.c | 49 +++-
> tools/perf/util/evsel.h | 16 ++
> tools/perf/util/header.c | 164 +++++++++++
> tools/perf/util/header.h | 2 +
> tools/perf/util/hist.c | 59 +++-
> tools/perf/util/parse-events.c | 1 +
> tools/perf/util/parse-events.h | 1 +
> tools/perf/util/parse-events.y | 10 +
> tools/perf/util/symbol.h | 3 +-
> 28 files changed, 1059 insertions(+), 267 deletions(-)
> create mode 100644 Documentation/ABI/testing/sysfs-bus-event_source-devices-events
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 22/25] perf: Make EVENT_ATTR global
2013-01-31 17:25 ` [PATCH 22/25] perf: Make EVENT_ATTR global Arnaldo Carvalho de Melo
@ 2013-02-01 10:26 ` Ingo Molnar
0 siblings, 0 replies; 10+ messages in thread
From: Ingo Molnar @ 2013-02-01 10:26 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Stephane Eranian
Cc: Andi Kleen, Peter Zijlstra, Robert Richter, Anton Blanchard,
linux-kernel, Stephane Eranian, Arnaldo Carvalho de Melo,
linuxppc-dev, Ingo Molnar, Paul Mackerras, Sukadev Bhattiprolu,
Jiri Olsa
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
>
> Rename EVENT_ATTR() to PMU_EVENT_ATTR() and make it global so it is
> available to all architectures.
>
> Further to allow architectures flexibility, have PMU_EVENT_ATTR() pass
> in the variable name as a parameter.
>
> Changelog[v2]
> - [Jiri Olsa] No need to define PMU_EVENT_PTR()
>
> Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
> Acked-by: Jiri Olsa <jolsa@redhat.com>
> Cc: Andi Kleen <ak@linux.intel.com>
> Cc: Anton Blanchard <anton@au1.ibm.com>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Jiri Olsa <jolsa@redhat.com>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Cc: Robert Richter <robert.richter@amd.com>
> Cc: Stephane Eranian <eranian@google.com>
> Cc: linuxppc-dev@ozlabs.org
> Link: http://lkml.kernel.org/r/20130123062422.GC13720@us.ibm.com
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> ---
> arch/x86/kernel/cpu/perf_event.c | 13 +++----------
> include/linux/perf_event.h | 11 +++++++++++
> 2 files changed, 14 insertions(+), 10 deletions(-)
so this one started conflicting non-trivially with tip:perf/x86
- the pending memory profiling kernel-side bits.
Can we merge the memory profiling tooling side bits together
with the kernel side bits - or does it need more work?
For now I've excluded perf/x86 from tip:master until this is
resolved.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 10+ messages in thread
* [GIT PULL 00/25] perf/core improvements and fixes
@ 2017-06-21 18:02 Arnaldo Carvalho de Melo
2017-06-21 18:13 ` Ingo Molnar
0 siblings, 1 reply; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-06-21 18:02 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Andi Kleen,
David Ahern, Jiri Olsa, Kan Liang, linuxppc-dev, Milian Wolff,
Namhyung Kim, Naveen N . Rao, Paolo Bonzini, Peter Zijlstra,
Ravi Bangoria, Robert Elliott, Stephane Eranian, Thomas Gleixner,
Wang Nan, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit 007b811b4041989ec2dc91b9614aa2c41332723e:
Merge tag 'perf-core-for-mingo-4.13-20170719' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-06-20 10:49:08 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.13-20170621
for you to fetch changes up to 701516ae3dec801084bc913d21e03fce15c61a0b:
perf script: Fix message because field list option is -F not -f (2017-06-21 11:35:53 -0300)
----------------------------------------------------------------
perf/core improvements ad fixes:
New features:
- Add support to measure SMI cost in 'perf stat' (Kan Liang)
- Add support for unwinding callchains in powerpc with libdw (Paolo Bonzini)
Fixes:
- Fix message: cpu list option is -C not -c (Adrian Hunter)
- Fix 'perf script' message: field list option is -F not -f (Adrian Hunter)
- Intel PT fixes: (Adrian Hunter)
o Fix missing stack clear
o Ensure IP is zero when state is INTEL_PT_STATE_NO_IP
o Fix last_ip usage
o Ensure never to set 'last_ip' when packet 'count' is zero
o Clear FUP flag on error
o Fix transactions_sample_type
Infrastructure:
- Intel PT cleanups/refactorings (Adrian Hunter)
o Use FUP always when scanning for an IP
o Add missing __fallthrough
o Remove redundant initial_skip checks
o Allow decoding with branch tracing disabled
o Add default config for pass-through branch enable
o Add documentation for new config terms
o Add decoder support for ptwrite and power event packets
o Add reserved byte to CBR packet payload
o Add decoder support for CBR events
- Move find_process() to the only place that uses it, skimming some
more fat from util.[ch] (Arnaldo Carvalho de Melo)
- Do parameter validation earlier on fetch_kernel_version() (Arnaldo Carvalho de Melo)
- Remove unused _ALL_SOURCE define (Arnaldo Carvalho de Melo)
- Add sysfs__write_int function (Kan Liang)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Adrian Hunter (19):
perf intel-pt: Move decoder error setting into one condition
perf intel-pt: Improve sample timestamp
perf intel-pt: Fix missing stack clear
perf intel-pt: Ensure IP is zero when state is INTEL_PT_STATE_NO_IP
perf intel-pt: Fix last_ip usage
perf intel-pt: Ensure never to set 'last_ip' when packet 'count' is zero
perf intel-pt: Use FUP always when scanning for an IP
perf intel-pt: Clear FUP flag on error
perf intel-pt: Add missing __fallthrough
perf intel-pt: Allow decoding with branch tracing disabled
perf intel-pt: Add default config for pass-through branch enable
perf intel-pt: Add documentation for new config terms
perf intel-pt: Add decoder support for ptwrite and power event packets
perf intel-pt: Add reserved byte to CBR packet payload
perf intel-pt: Add decoder support for CBR events
perf intel-pt: Remove redundant initial_skip checks
perf intel-pt: Fix transactions_sample_type
perf tools: Fix message because cpu list option is -C not -c
perf script: Fix message because field list option is -F not -f
Arnaldo Carvalho de Melo (3):
perf evsel: Adopt find_process()
perf tools: Do parameter validation earlier on fetch_kernel_version()
perf tools: Remove unused _ALL_SOURCE define
Kan Liang (2):
tools lib api fs: Add sysfs__write_int function
perf stat: Add support to measure SMI cost
Paolo Bonzini (1):
perf unwind: Support for powerpc
tools/lib/api/fs/fs.c | 30 +++
tools/lib/api/fs/fs.h | 4 +
tools/perf/Documentation/intel-pt.txt | 36 +++
tools/perf/Documentation/perf-stat.txt | 14 +
tools/perf/Makefile.config | 2 +-
tools/perf/arch/powerpc/util/Build | 2 +
tools/perf/arch/powerpc/util/unwind-libdw.c | 73 ++++++
tools/perf/arch/x86/util/intel-pt.c | 5 +
tools/perf/builtin-script.c | 2 +-
tools/perf/builtin-stat.c | 49 ++++
tools/perf/util/evsel.c | 39 +++
.../perf/util/intel-pt-decoder/intel-pt-decoder.c | 290 +++++++++++++++++++--
.../perf/util/intel-pt-decoder/intel-pt-decoder.h | 13 +
.../util/intel-pt-decoder/intel-pt-pkt-decoder.c | 110 +++++++-
.../util/intel-pt-decoder/intel-pt-pkt-decoder.h | 7 +
tools/perf/util/intel-pt.c | 23 +-
tools/perf/util/session.c | 2 +-
tools/perf/util/stat-shadow.c | 33 +++
tools/perf/util/stat.c | 2 +
tools/perf/util/stat.h | 2 +
tools/perf/util/util.c | 52 +---
tools/perf/util/util.h | 3 -
22 files changed, 710 insertions(+), 83 deletions(-)
create mode 100644 tools/perf/arch/powerpc/util/unwind-libdw.c
Test results:
The first ones are container (docker) based builds of tools/perf with and
without libelf support, objtool where it is supported and samples/bpf/, ditto.
Where clang is available, it is also used to build perf with/without libelf.
Several are cross builds, the ones with -x-ARCH, and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.
The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.
Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.
# dm
1 alpine:3.4: Ok
2 alpine:3.5: Ok
3 alpine:3.6: Ok
4 alpine:edge: Ok
5 android-ndk:r12b-arm: Ok
6 archlinux:latest: Ok
7 centos:5: Ok
8 centos:6: Ok
9 centos:7: Ok
10 debian:7: Ok
11 debian:8: Ok
12 debian:9: Ok
13 debian:experimental: Ok
14 debian:experimental-x-arm64: Ok
15 debian:experimental-x-mips: Ok
16 debian:experimental-x-mips64: Ok
17 debian:experimental-x-mipsel: Ok
18 fedora:20: Ok
19 fedora:21: Ok
20 fedora:22: Ok
21 fedora:23: Ok
22 fedora:24: Ok
23 fedora:24-x-ARC-uClibc: Ok
24 fedora:25: Ok
25 fedora:rawhide: Ok
26 mageia:5: Ok
27 opensuse:13.2: Ok
28 opensuse:42.1: Ok
29 opensuse:tumbleweed: Ok
30 ubuntu:12.04.5: Ok
31 ubuntu:14.04.4: Ok
32 ubuntu:14.04.4-x-linaro-arm64: Ok
33 ubuntu:15.10: Ok
34 ubuntu:16.04: Ok
35 ubuntu:16.04-x-arm: Ok
36 ubuntu:16.04-x-arm64: Ok
37 ubuntu:16.04-x-powerpc: Ok
38 ubuntu:16.04-x-powerpc64: Ok
39 ubuntu:16.04-x-powerpc64el: Ok
40 ubuntu:16.04-x-s390: Ok
41 ubuntu:16.10: Ok
42 ubuntu:17.04: Ok
#
# uname -a
Linux jouet 4.12.0-rc4+ #1 SMP Fri Jun 9 12:59:23 -03 2017 x86_64 x86_64 x86_64 GNU/Linux
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Parse event definition strings : Ok
6: Simple expression parser : Ok
7: PERF_RECORD_* events & perf_sample fields : Ok
8: Parse perf pmu format : Ok
9: DSO data read : Ok
10: DSO data cache : Ok
11: DSO data reopen : Ok
12: Roundtrip evsel->name : Ok
13: Parse sched tracepoints fields : Ok
14: syscalls:sys_enter_openat event fields : Ok
15: Setup struct perf_event_attr : Ok
16: Match and link multiple hists : Ok
17: 'import perf' in python : Ok
18: Breakpoint overflow signal handler : Ok
19: Breakpoint overflow sampling : Ok
20: Number of exit events of a simple workload : Ok
21: Software clock events period values : Ok
22: Object code reading : Ok
23: Sample parsing : Ok
24: Use a dummy software event to keep tracking: Ok
25: Parse with no sample_id_all bit set : Ok
26: Filter hist entries : Ok
27: Lookup mmap thread : Ok
28: Share thread mg : Ok
29: Sort output of hist entries : Ok
30: Cumulate child hist entries : Ok
31: Track with sched_switch : Ok
32: Filter fds with revents mask in a fdarray : Ok
33: Add fd to a fdarray, making it autogrow : Ok
34: kmod_path__parse : Ok
35: Thread map : Ok
36: LLVM search and compile :
36.1: Basic BPF llvm compile : Ok
36.2: kbuild searching : Ok
36.3: Compile source for BPF prologue generation: Ok
36.4: Compile source for BPF relocation : Ok
37: Session topology : Ok
38: BPF filter :
38.1: Basic BPF filtering : Ok
38.2: BPF pinning : Ok
38.3: BPF prologue generation : Ok
38.4: BPF relocation checker : Ok
39: Synthesize thread map : Ok
40: Remove thread map : Ok
41: Synthesize cpu map : Ok
42: Synthesize stat config : Ok
43: Synthesize stat : Ok
44: Synthesize stat round : Ok
45: Synthesize attr update : Ok
46: Event times : Ok
47: Read backward ring buffer : Ok
48: Print cpu map : Ok
49: Probe SDT events : Ok
50: is_printable_array : Ok
51: Print bitmap : Ok
52: perf hooks : Ok
53: builtin clang support : Skip (not compiled in)
54: unit_number__scnprintf : Ok
55: x86 rdpmc : Ok
56: Convert perf time to TSC : Ok
57: DWARF unwind : Ok
58: x86 instruction decoder - new instructions : Ok
59: Intel cqm nmi context read : Skip
#
$ make -C tools/perf build-test
make: Entering directory '/home/acme/git/linux/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_no_slang_O: make NO_SLANG=1
make_clean_all_O: make clean all
make_no_gtk2_O: make NO_GTK2=1
make_no_libperl_O: make NO_LIBPERL=1
make_no_auxtrace_O: make NO_AUXTRACE=1
make_doc_O: make doc
make_no_libbionic_O: make NO_LIBBIONIC=1
make_no_backtrace_O: make NO_BACKTRACE=1
make_no_libelf_O: make NO_LIBELF=1
make_no_libaudit_O: make NO_LIBAUDIT=1
make_no_libnuma_O: make NO_LIBNUMA=1
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_no_demangle_O: make NO_DEMANGLE=1
make_util_map_o_O: make util/map.o
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_no_libunwind_O: make NO_LIBUNWIND=1
make_no_libpython_O: make NO_LIBPYTHON=1
make_perf_o_O: make perf.o
make_tags_O: make tags
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_install_bin_O: make install-bin
make_debug_O: make DEBUG=1
make_no_libbpf_O: make NO_LIBBPF=1
make_with_babeltrace_O: make LIBBABELTRACE=1
make_pure_O: make
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_install_prefix_O: make install prefix=/tmp/krava
make_install_O: make install
make_help_O: make help
make_static_O: make LDFLAGS=-static
make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
make_no_newt_O: make NO_NEWT=1
OK
make: Leaving directory '/home/acme/git/linux/tools/perf'
$
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [GIT PULL 00/25] perf/core improvements and fixes
2017-06-21 18:02 Arnaldo Carvalho de Melo
@ 2017-06-21 18:13 ` Ingo Molnar
0 siblings, 0 replies; 10+ messages in thread
From: Ingo Molnar @ 2017-06-21 18:13 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Adrian Hunter, Andi Kleen, David Ahern, Jiri Olsa,
Kan Liang, linuxppc-dev, Milian Wolff, Namhyung Kim,
Naveen N . Rao, Paolo Bonzini, Peter Zijlstra, Ravi Bangoria,
Robert Elliott, Stephane Eranian, Thomas Gleixner, Wang Nan,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit 007b811b4041989ec2dc91b9614aa2c41332723e:
>
> Merge tag 'perf-core-for-mingo-4.13-20170719' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-06-20 10:49:08 +0200)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.13-20170621
>
> for you to fetch changes up to 701516ae3dec801084bc913d21e03fce15c61a0b:
>
> perf script: Fix message because field list option is -F not -f (2017-06-21 11:35:53 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements ad fixes:
>
> New features:
>
> - Add support to measure SMI cost in 'perf stat' (Kan Liang)
>
> - Add support for unwinding callchains in powerpc with libdw (Paolo Bonzini)
>
> Fixes:
>
> - Fix message: cpu list option is -C not -c (Adrian Hunter)
>
> - Fix 'perf script' message: field list option is -F not -f (Adrian Hunter)
>
> - Intel PT fixes: (Adrian Hunter)
>
> o Fix missing stack clear
> o Ensure IP is zero when state is INTEL_PT_STATE_NO_IP
> o Fix last_ip usage
> o Ensure never to set 'last_ip' when packet 'count' is zero
> o Clear FUP flag on error
> o Fix transactions_sample_type
>
> Infrastructure:
>
> - Intel PT cleanups/refactorings (Adrian Hunter)
>
> o Use FUP always when scanning for an IP
> o Add missing __fallthrough
> o Remove redundant initial_skip checks
> o Allow decoding with branch tracing disabled
> o Add default config for pass-through branch enable
> o Add documentation for new config terms
> o Add decoder support for ptwrite and power event packets
> o Add reserved byte to CBR packet payload
> o Add decoder support for CBR events
>
> - Move find_process() to the only place that uses it, skimming some
> more fat from util.[ch] (Arnaldo Carvalho de Melo)
>
> - Do parameter validation earlier on fetch_kernel_version() (Arnaldo Carvalho de Melo)
>
> - Remove unused _ALL_SOURCE define (Arnaldo Carvalho de Melo)
>
> - Add sysfs__write_int function (Kan Liang)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Adrian Hunter (19):
> perf intel-pt: Move decoder error setting into one condition
> perf intel-pt: Improve sample timestamp
> perf intel-pt: Fix missing stack clear
> perf intel-pt: Ensure IP is zero when state is INTEL_PT_STATE_NO_IP
> perf intel-pt: Fix last_ip usage
> perf intel-pt: Ensure never to set 'last_ip' when packet 'count' is zero
> perf intel-pt: Use FUP always when scanning for an IP
> perf intel-pt: Clear FUP flag on error
> perf intel-pt: Add missing __fallthrough
> perf intel-pt: Allow decoding with branch tracing disabled
> perf intel-pt: Add default config for pass-through branch enable
> perf intel-pt: Add documentation for new config terms
> perf intel-pt: Add decoder support for ptwrite and power event packets
> perf intel-pt: Add reserved byte to CBR packet payload
> perf intel-pt: Add decoder support for CBR events
> perf intel-pt: Remove redundant initial_skip checks
> perf intel-pt: Fix transactions_sample_type
> perf tools: Fix message because cpu list option is -C not -c
> perf script: Fix message because field list option is -F not -f
>
> Arnaldo Carvalho de Melo (3):
> perf evsel: Adopt find_process()
> perf tools: Do parameter validation earlier on fetch_kernel_version()
> perf tools: Remove unused _ALL_SOURCE define
>
> Kan Liang (2):
> tools lib api fs: Add sysfs__write_int function
> perf stat: Add support to measure SMI cost
>
> Paolo Bonzini (1):
> perf unwind: Support for powerpc
>
> tools/lib/api/fs/fs.c | 30 +++
> tools/lib/api/fs/fs.h | 4 +
> tools/perf/Documentation/intel-pt.txt | 36 +++
> tools/perf/Documentation/perf-stat.txt | 14 +
> tools/perf/Makefile.config | 2 +-
> tools/perf/arch/powerpc/util/Build | 2 +
> tools/perf/arch/powerpc/util/unwind-libdw.c | 73 ++++++
> tools/perf/arch/x86/util/intel-pt.c | 5 +
> tools/perf/builtin-script.c | 2 +-
> tools/perf/builtin-stat.c | 49 ++++
> tools/perf/util/evsel.c | 39 +++
> .../perf/util/intel-pt-decoder/intel-pt-decoder.c | 290 +++++++++++++++++++--
> .../perf/util/intel-pt-decoder/intel-pt-decoder.h | 13 +
> .../util/intel-pt-decoder/intel-pt-pkt-decoder.c | 110 +++++++-
> .../util/intel-pt-decoder/intel-pt-pkt-decoder.h | 7 +
> tools/perf/util/intel-pt.c | 23 +-
> tools/perf/util/session.c | 2 +-
> tools/perf/util/stat-shadow.c | 33 +++
> tools/perf/util/stat.c | 2 +
> tools/perf/util/stat.h | 2 +
> tools/perf/util/util.c | 52 +---
> tools/perf/util/util.h | 3 -
> 22 files changed, 710 insertions(+), 83 deletions(-)
> create mode 100644 tools/perf/arch/powerpc/util/unwind-libdw.c
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2017-06-21 18:13 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-31 17:25 [GIT PULL 00/25] perf/core improvements and fixes Arnaldo Carvalho de Melo
2013-01-31 17:25 ` [PATCH 21/25] perf/Power7: Use macros to identify perf events Arnaldo Carvalho de Melo
2013-01-31 17:25 ` [PATCH 22/25] perf: Make EVENT_ATTR global Arnaldo Carvalho de Melo
2013-02-01 10:26 ` Ingo Molnar
2013-01-31 17:25 ` [PATCH 23/25] perf/POWER7: Make generic event translations available in sysfs Arnaldo Carvalho de Melo
2013-01-31 17:25 ` [PATCH 24/25] perf/POWER7: Make some POWER7 events " Arnaldo Carvalho de Melo
2013-01-31 17:25 ` [PATCH 25/25] perf: Document the ABI of perf sysfs entries Arnaldo Carvalho de Melo
2013-02-01 10:18 ` [GIT PULL 00/25] perf/core improvements and fixes Ingo Molnar
-- strict thread matches above, loose matches on Subject: below --
2017-06-21 18:02 Arnaldo Carvalho de Melo
2017-06-21 18:13 ` Ingo Molnar
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).