linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/7] perf tool: add meta-data header support for pipe-mode
@ 2017-05-18  4:15 David Carrillo-Cisneros
  2017-05-18  4:15 ` [PATCH 1/7] perf header: fail on write_padded error David Carrillo-Cisneros
                   ` (7 more replies)
  0 siblings, 8 replies; 22+ messages in thread
From: David Carrillo-Cisneros @ 2017-05-18  4:15 UTC (permalink / raw)
  To: linux-kernel
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Alexander Shishkin, Andi Kleen, Simon Que, Wang Nan, Jiri Olsa,
	He Kuang, Masami Hiramatsu, David Ahern, Namhyung Kim,
	Stephane Eranian, Paul Turner, David Carrillo-Cisneros


(This is a rebased and updated version of Stephane Eranian's version
 in https://patchwork.kernel.org/patch/1499081/)
 
Up until now, meta-data was only available when perf record
was used in "regular" mode, i.e., generating a perf.data file.
For users depending on pipe mode, neither host or event header
information were gathered. This patch addresses this limitation.
    
The difficulty in pipe mode is that information needs to be written
sequentially to the pipe. Meta data headers are usually generated
(and also expected) at the beginning of the file (or piped output).
To solve this problem, we introduce new synthetic record types,
one for each meta-data type. The approach is similar to what
is *ALREADY* used for BUILD_ID and TRACING_DATA.
    
We have modified util/header.c such that the same routines are used
to generate and read the meta-data information regardless of pipe-mode
vs. regular mode. To make this work, we added a new struct called
feat_fd which encapsulates all the information necessary to read or
write meta-data information to a file/pipe or from a file/pipe.

With this patch, it is possible to get:
  $ perf record -o - -e cycles -c 100000 sleep 1 | perf report --stdio
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.000 MB - ]
  # hostname : myhost
  # os release : 4.11.0-dbx-up_perf
  # perf version : 4.11.rc6.g6277c80
  # arch : x86_64
  # nrcpus online : 72
  # nrcpus avail : 72
  # cpudesc : Intel(R) Xeon(R) CPU E5-2696 v3 @ 2.30GHz
  # cpuid : GenuineIntel,6,63,2
  # total memory : 263457192 kB
  # cmdline : /root/perf record -o - -e cycles -c 100000 sleep 1
  # HEADER_CPU_TOPOLOGY info available, use -I to display
  # HEADER_NUMA_TOPOLOGY info available, use -I to display
  # pmu mappings: intel_bts = 6, uncore_imc_4 = 22, uncore_sbox_1 = 47, uncore_cbox_5 = 33, uncore_ha_0 = 16, uncore_cbox
  Percent |      Source code & Disassembly of kcore for cycles (9 samples)
  ...


David Carrillo-Cisneros (7):
  perf header: fail on write_padded error
  perf util: add const modifier to buf in "writen" function
  perf header: use struct feat_fd for write
  perf header: use struct feat_fd for print
  perf header: use struct feat_fd for process and read
  perf tool: make show-info in perf report a tool attribute
  perf tools: add feature header record to pipe-mode

 tools/perf/builtin-annotate.c |   1 +
 tools/perf/builtin-inject.c   |   1 +
 tools/perf/builtin-record.c   |   6 +
 tools/perf/builtin-report.c   |   6 +-
 tools/perf/builtin-script.c   |   6 +-
 tools/perf/util/build-id.c    |  10 +-
 tools/perf/util/build-id.h    |   4 +-
 tools/perf/util/event.c       |  13 +
 tools/perf/util/event.h       |  19 +
 tools/perf/util/header.c      | 905 +++++++++++++++++++++++-------------------
 tools/perf/util/header.h      |  17 +-
 tools/perf/util/session.c     |  12 +
 tools/perf/util/tool.h        |   4 +-
 tools/perf/util/util.c        |   6 +-
 tools/perf/util/util.h        |   2 +-
 15 files changed, 594 insertions(+), 418 deletions(-)

-- 
2.13.0.303.g4ebf302169-goog

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2017-05-18 18:30 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-18  4:15 [PATCH 0/7] perf tool: add meta-data header support for pipe-mode David Carrillo-Cisneros
2017-05-18  4:15 ` [PATCH 1/7] perf header: fail on write_padded error David Carrillo-Cisneros
2017-05-18  4:15 ` [PATCH 2/7] perf util: add const modifier to buf in "writen" function David Carrillo-Cisneros
2017-05-18  4:15 ` [PATCH 3/7] perf header: use struct feat_fd for write David Carrillo-Cisneros
2017-05-18 16:13   ` Jiri Olsa
2017-05-18 18:02     ` David Carrillo-Cisneros
2017-05-18  4:15 ` [PATCH 4/7] perf header: use struct feat_fd for print David Carrillo-Cisneros
2017-05-18  4:16 ` [PATCH 5/7] perf header: use struct feat_fd for process and read David Carrillo-Cisneros
2017-05-18 16:13   ` Jiri Olsa
2017-05-18 18:02     ` David Carrillo-Cisneros
2017-05-18  4:16 ` [PATCH 6/7] perf tool: make show-info in perf report a tool attribute David Carrillo-Cisneros
2017-05-18  4:16 ` [PATCH 7/7] perf tools: add feature header record to pipe-mode David Carrillo-Cisneros
2017-05-18 16:12   ` Jiri Olsa
2017-05-18 18:30     ` David Carrillo-Cisneros
2017-05-18 16:13   ` Jiri Olsa
2017-05-18 16:13   ` Jiri Olsa
2017-05-18 18:29     ` David Carrillo-Cisneros
2017-05-18 16:13   ` Jiri Olsa
2017-05-18 16:13   ` Jiri Olsa
2017-05-18 18:29     ` David Carrillo-Cisneros
2017-05-18  5:10 ` [PATCH 0/7] perf tool: add meta-data header support for pipe-mode Andi Kleen
2017-05-18 18:02   ` David Carrillo-Cisneros

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).