[GIT PULL 00/27] perf/core2 improvements and fixes

From: Arnaldo Carvalho de Melo
Date: Mon Sep 14 2015 - 12:39:19 EST


From: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>

Hi Ingo,

Please consider pulling, this should have all the issues related to
that 'socket' sort order/filter fixed. I reordered some patches I did to
get the right infrastructure in place and merged a few fixes from me, Jiri,
so that we have a clean bisect history wrt this feature.

I tested it using old perf.data files with no cpu->socket_id header,
perf top, and the reported problems from you, from Wang, the ones I found seem
to be all fixed. I also built tested it in a few systems, fixing problems, for
instance with using a 'socket' variable name that was shadowing a glibc decl.

We still have problems tho when there are offline CPUs, but that is a
longstanding problem from the days when Stephane added that code and only
affects the perf.data case, i.e. when generating the CPU topology perf.data
header it bails out (but doesn't segfaults, its just the mapping that is lost)
as soon as it fails to find files that don't exist when a CPU is offline.

I.e.:

perf record -a usleep 1; perf report -s socket

Will show -1 for the socket info, but at least that doesn't cause
a segfault anymore ;-)

perf top -s socket

Works tho when CPUs are offline.

I will try and fix that other problem, but I wanted to get what is
in perf/core2 flushed so that I can process some more outstanding patches, to
avoid stalling too many downstreamers.

Some of these other patches I want to process include fixes for
perf/urgent, like some from Wang, etc.

- Arnaldo

The following changes since commit 8f3e5684d3fbd91ead283916676fa3dac22615e5:

perf/core: Drop PERF_EVENT_TXN (2015-09-13 11:27:30 +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-2

for you to fetch changes up to 92d424ae898e0d04ac34263aa33e40acc1e1f3d1:

perf test: Add entry for hists socket filter (2015-09-14 13:04:10 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Add 'socket' sort entry, to sort by the processor socket in
'perf top' and 'perf report' (Kan Liang)

- Introduce --socket-filter to 'perf report', for filtering by processor
socket (Kan Liang)

- Add new "Zoom into Processor Socket" operation in the perf hists browser,
used in 'perf top' and 'perf report' (Kan Liang)

- Fix the 'CPU' hist browser column width calculation (Arnaldo Carvalho de Melo)

Infrastructure:

- 'perf test' fixes for the object code reading entry (Jan Stancek)

- Add processor socket and cpu topology 'perf test' entries (Kan Liang)

- Introduce more sysfs__read_TYPE() helpers (Arnaldo Carvalho de Melo)

- Group cpu information reading functions in tools/lib/api/cpu.[ch],
starting with cpu__get_max_freq() from a patchkit by Kan Liang
(Arnaldo Carvalho de Melo)

- Retrieve the MSR PMU type from a perf.data file header and store it
in struct perf_env (Kan Liang)

- Add tools/include into CTAGS file list (Jiri Olsa)

- Add iterator function for perf tests (Matt Fleming)

- Switch to tracing_patch interface (Jiri Olsa)

Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (10):
perf env: Move perf_env out of header.h and session.c into separate object
perf env: Rename some leftovers from rename to perf_env
perf env: Adopt perf_header__set_cmdline
perf hists browser: Fixup the "cpu" column width calculation
perf evsel: Remove forward declaration of 'struct perf_evlist'
tools lib api fs: Introduce sysfs__read_{int,ull}()
tools lib api cpu: Introduce cpu.[ch] to obtain cpu related information
perf cpu_map: Use sysfs__read_int in get_{core,socket}_id()
perf env: Introduce read_cpu_topology_map() method
perf machine: Add pointer to sample's environment

Jan Stancek (4):
perf tests: Take into account address of each objdump line
perf tests: Make objdump disassemble zero blocks
perf tests: Stop reading if objdump output crossed sections
perf tests: Print objdump/dso buffers if they don't match

Jiri Olsa (5):
tools lib api fs: Make tracing_path_strerror_open message generic
tools lib api fs: Replace debugfs/tracefs objects interface with fs.c
tools lib api fs: Remove debugfs, tracefs and findfs objects
perf tools: Switch to tracing_path interface on appropriate places
perf tools: Add tools/include into tags directories

Kan Liang (7):
perf test: Add entry to test cpu topology
perf env: Read msr pmu type from header
perf tools: Add processor socket info to hist_entry and addr_location
perf tools: Introduce new sort type "socket" for the processor socket
perf report: Introduce --socket-filter option
perf hists browser: Zoom in/out for processor socket
perf test: Add entry for hists socket filter

Matt Fleming (1):
perf tests: Introduce iterator function for tests

tools/lib/api/Build | 1 +
tools/lib/api/cpu.c | 18 +++++
tools/lib/api/cpu.h | 6 ++
tools/lib/api/fs/Build | 3 -
tools/lib/api/fs/debugfs.c | 77 -------------------
tools/lib/api/fs/debugfs.h | 23 ------
tools/lib/api/fs/findfs.c | 63 ----------------
tools/lib/api/fs/findfs.h | 23 ------
tools/lib/api/fs/fs.c | 46 +++++++++++-
tools/lib/api/fs/fs.h | 4 +
tools/lib/api/fs/tracefs.c | 78 -------------------
tools/lib/api/fs/tracefs.h | 21 ------
tools/lib/api/fs/tracing_path.c | 35 +++++----
tools/perf/Documentation/perf-report.txt | 6 +-
tools/perf/Makefile.perf | 2 +-
tools/perf/arch/common.c | 10 +--
tools/perf/arch/common.h | 4 +-
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-kvm.c | 1 -
tools/perf/builtin-probe.c | 1 -
tools/perf/builtin-report.c | 11 +++
tools/perf/builtin-top.c | 17 ++++-
tools/perf/perf.c | 2 +
tools/perf/tests/Build | 1 +
tools/perf/tests/builtin-test.c | 36 +++++----
tools/perf/tests/code-reading.c | 74 +++++++++++++++----
tools/perf/tests/hists_filter.c | 55 +++++++++++---
tools/perf/tests/openat-syscall-all-cpus.c | 10 +--
tools/perf/tests/openat-syscall.c | 10 +--
tools/perf/tests/parse-events.c | 19 +----
tools/perf/tests/tests.h | 1 +
tools/perf/tests/topology.c | 115 +++++++++++++++++++++++++++++
tools/perf/ui/browsers/hists.c | 61 +++++++++++++--
tools/perf/util/Build | 1 +
tools/perf/util/cpumap.c | 46 +++---------
tools/perf/util/env.c | 86 +++++++++++++++++++++
tools/perf/util/env.h | 44 +++++++++++
tools/perf/util/event.c | 8 ++
tools/perf/util/evsel.c | 2 +-
tools/perf/util/evsel.h | 1 -
tools/perf/util/header.c | 76 ++++++-------------
tools/perf/util/header.h | 33 +--------
tools/perf/util/hist.c | 38 ++++++++++
tools/perf/util/hist.h | 6 +-
tools/perf/util/machine.c | 1 +
tools/perf/util/machine.h | 1 +
tools/perf/util/parse-options.c | 2 +-
tools/perf/util/probe-event.c | 5 +-
tools/perf/util/probe-file.c | 15 +---
tools/perf/util/session.c | 22 +-----
tools/perf/util/sort.c | 25 +++++++
tools/perf/util/sort.h | 3 +
tools/perf/util/symbol.h | 1 +
tools/perf/util/util.h | 3 +-
54 files changed, 700 insertions(+), 555 deletions(-)
create mode 100644 tools/lib/api/cpu.c
create mode 100644 tools/lib/api/cpu.h
delete mode 100644 tools/lib/api/fs/debugfs.c
delete mode 100644 tools/lib/api/fs/debugfs.h
delete mode 100644 tools/lib/api/fs/findfs.c
delete mode 100644 tools/lib/api/fs/findfs.h
delete mode 100644 tools/lib/api/fs/tracefs.c
delete mode 100644 tools/lib/api/fs/tracefs.h
create mode 100644 tools/perf/tests/topology.c
create mode 100644 tools/perf/util/env.c
create mode 100644 tools/perf/util/env.h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/