* [GIT PULL 00/25] perf/core improvements and fixes
@ 2013-01-31 17:25 Arnaldo Carvalho de Melo
2013-02-01 10:18 ` Ingo Molnar
0 siblings, 1 reply; 5+ 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] 5+ messages in thread
* Re: [GIT PULL 00/25] perf/core improvements and fixes
2013-01-31 17:25 Arnaldo Carvalho de Melo
@ 2013-02-01 10:18 ` Ingo Molnar
0 siblings, 0 replies; 5+ 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] 5+ 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:02 ` [PATCH 06/25] perf unwind: Support for powerpc Arnaldo Carvalho de Melo
2017-06-21 18:13 ` [GIT PULL 00/25] perf/core improvements and fixes Ingo Molnar
0 siblings, 2 replies; 5+ 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] 5+ messages in thread
* [PATCH 06/25] perf unwind: Support for powerpc
2017-06-21 18:02 [GIT PULL 00/25] perf/core improvements and fixes Arnaldo Carvalho de Melo
@ 2017-06-21 18:02 ` Arnaldo Carvalho de Melo
2017-06-21 18:13 ` [GIT PULL 00/25] perf/core improvements and fixes Ingo Molnar
1 sibling, 0 replies; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-06-21 18:02 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Paolo Bonzini, Naveen N . Rao, linuxppc-dev,
Arnaldo Carvalho de Melo
From: Paolo Bonzini <pbonzini@redhat.com>
Porting PPC to libdw only needs an architecture-specific hook to move
the register state from perf to libdw.
The ARM and x86 architectures already use libdw, and it is useful to
have as much common code for the unwinder as possible. Mark Wielaard
has contributed a frame-based unwinder to libdw, so that unwinding works
even for binaries that do not have CFI information. In addition,
libunwind is always preferred to libdw by the build machinery so this
cannot introduce regressions on machines that have both libunwind and
libdw installed.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Milian Wolff <milian.wolff@kdab.com>
Acked-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Link: http://lkml.kernel.org/r/1496312681-20133-1-git-send-email-pbonzini@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Makefile.config | 2 +-
tools/perf/arch/powerpc/util/Build | 2 +
tools/perf/arch/powerpc/util/unwind-libdw.c | 73 +++++++++++++++++++++++++++++
3 files changed, 76 insertions(+), 1 deletion(-)
create mode 100644 tools/perf/arch/powerpc/util/unwind-libdw.c
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 1f4fbc9a3292..bdf0e87f9b29 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -61,7 +61,7 @@ endif
# Disable it on all other architectures in case libdw unwind
# support is detected in system. Add supported architectures
# to the check.
-ifneq ($(SRCARCH),$(filter $(SRCARCH),x86 arm))
+ifneq ($(SRCARCH),$(filter $(SRCARCH),x86 arm powerpc))
NO_LIBDW_DWARF_UNWIND := 1
endif
diff --git a/tools/perf/arch/powerpc/util/Build b/tools/perf/arch/powerpc/util/Build
index 90ad64b231cd..2e6595310420 100644
--- a/tools/perf/arch/powerpc/util/Build
+++ b/tools/perf/arch/powerpc/util/Build
@@ -5,4 +5,6 @@ libperf-y += perf_regs.o
libperf-$(CONFIG_DWARF) += dwarf-regs.o
libperf-$(CONFIG_DWARF) += skip-callchain-idx.o
+
libperf-$(CONFIG_LIBUNWIND) += unwind-libunwind.o
+libperf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o
diff --git a/tools/perf/arch/powerpc/util/unwind-libdw.c b/tools/perf/arch/powerpc/util/unwind-libdw.c
new file mode 100644
index 000000000000..3a24b3c43273
--- /dev/null
+++ b/tools/perf/arch/powerpc/util/unwind-libdw.c
@@ -0,0 +1,73 @@
+#include <elfutils/libdwfl.h>
+#include "../../util/unwind-libdw.h"
+#include "../../util/perf_regs.h"
+#include "../../util/event.h"
+
+/* See backends/ppc_initreg.c and backends/ppc_regs.c in elfutils. */
+static const int special_regs[3][2] = {
+ { 65, PERF_REG_POWERPC_LINK },
+ { 101, PERF_REG_POWERPC_XER },
+ { 109, PERF_REG_POWERPC_CTR },
+};
+
+bool libdw__arch_set_initial_registers(Dwfl_Thread *thread, void *arg)
+{
+ struct unwind_info *ui = arg;
+ struct regs_dump *user_regs = &ui->sample->user_regs;
+ Dwarf_Word dwarf_regs[32], dwarf_nip;
+ size_t i;
+
+#define REG(r) ({ \
+ Dwarf_Word val = 0; \
+ perf_reg_value(&val, user_regs, PERF_REG_POWERPC_##r); \
+ val; \
+})
+
+ dwarf_regs[0] = REG(R0);
+ dwarf_regs[1] = REG(R1);
+ dwarf_regs[2] = REG(R2);
+ dwarf_regs[3] = REG(R3);
+ dwarf_regs[4] = REG(R4);
+ dwarf_regs[5] = REG(R5);
+ dwarf_regs[6] = REG(R6);
+ dwarf_regs[7] = REG(R7);
+ dwarf_regs[8] = REG(R8);
+ dwarf_regs[9] = REG(R9);
+ dwarf_regs[10] = REG(R10);
+ dwarf_regs[11] = REG(R11);
+ dwarf_regs[12] = REG(R12);
+ dwarf_regs[13] = REG(R13);
+ dwarf_regs[14] = REG(R14);
+ dwarf_regs[15] = REG(R15);
+ dwarf_regs[16] = REG(R16);
+ dwarf_regs[17] = REG(R17);
+ dwarf_regs[18] = REG(R18);
+ dwarf_regs[19] = REG(R19);
+ dwarf_regs[20] = REG(R20);
+ dwarf_regs[21] = REG(R21);
+ dwarf_regs[22] = REG(R22);
+ dwarf_regs[23] = REG(R23);
+ dwarf_regs[24] = REG(R24);
+ dwarf_regs[25] = REG(R25);
+ dwarf_regs[26] = REG(R26);
+ dwarf_regs[27] = REG(R27);
+ dwarf_regs[28] = REG(R28);
+ dwarf_regs[29] = REG(R29);
+ dwarf_regs[30] = REG(R30);
+ dwarf_regs[31] = REG(R31);
+ if (!dwfl_thread_state_registers(thread, 0, 32, dwarf_regs))
+ return false;
+
+ dwarf_nip = REG(NIP);
+ dwfl_thread_state_register_pc(thread, dwarf_nip);
+ for (i = 0; i < ARRAY_SIZE(special_regs); i++) {
+ Dwarf_Word val = 0;
+ perf_reg_value(&val, user_regs, special_regs[i][1]);
+ if (!dwfl_thread_state_registers(thread,
+ special_regs[i][0], 1,
+ &val))
+ return false;
+ }
+
+ return true;
+}
--
2.9.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [GIT PULL 00/25] perf/core improvements and fixes
2017-06-21 18:02 [GIT PULL 00/25] perf/core improvements and fixes Arnaldo Carvalho de Melo
2017-06-21 18:02 ` [PATCH 06/25] perf unwind: Support for powerpc Arnaldo Carvalho de Melo
@ 2017-06-21 18:13 ` Ingo Molnar
1 sibling, 0 replies; 5+ 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] 5+ messages in thread
end of thread, other threads:[~2017-06-21 18:13 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-21 18:02 [GIT PULL 00/25] perf/core improvements and fixes Arnaldo Carvalho de Melo
2017-06-21 18:02 ` [PATCH 06/25] perf unwind: Support for powerpc Arnaldo Carvalho de Melo
2017-06-21 18:13 ` [GIT PULL 00/25] perf/core improvements and fixes Ingo Molnar
-- strict thread matches above, loose matches on Subject: below --
2013-01-31 17:25 Arnaldo Carvalho de Melo
2013-02-01 10:18 ` 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).