From: David Carrillo-Cisneros <davidcc@google.com>
To: linux-kernel@vger.kernel.org
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Andi Kleen <ak@linux.intel.com>, Simon Que <sque@chromium.org>,
Wang Nan <wangnan0@huawei.com>, Jiri Olsa <jolsa@kernel.org>,
He Kuang <hekuang@huawei.com>,
Masami Hiramatsu <mhiramat@kernel.org>,
Stephane Eranian <eranian@google.com>,
Paul Turner <pjt@google.com>,
David Carrillo-Cisneros <davidcc@google.com>
Subject: [PATCH v4 00/16] perf tool: add meta-data header support for pipe-mode
Date: Mon, 12 Jun 2017 21:29:16 -0700 [thread overview]
Message-ID: <20170613042932.141842-1-davidcc@google.com> (raw)
v4: - Limit write_* functions to page_size.
- Fixed bugs spotted by Jiri.
- Add information about pipe-mode to some error messages.
v3: - Fix header output for event aux record.
- Uniformize variable naming and other cleanup.
- Other fixes suggested by Jiri and Nahmyung.
v2: - Finer patch splitting.
- Add only one record type with a feature id instead of one
record per new feature (as suggested by Jiri).
- Add perf.data documentation.
(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 series, it is possible to get:
$ perf record -o - -e cycles sleep 1 | perf report --stdio --header
# ========
# captured on: Mon May 22 16:33:43 2017
# ========
#
# hostname : my_hostname
# 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 -e cycles sleep 1
# event : name = cycles, , size = 112, { sample_period, sample_freq } = 4000, sample_type = IP|TID|TIME|PERIOD, disabled = 1, inherit = 1, mmap = 1, comm = 1, freq = 1, enable_on_exec = 1, task = 1, sample_id_all = 1, exclude_guest = 1, mmap2 = 1, comm_exec = 1
# CPU_TOPOLOGY info available, use -I to display
# NUMA_TOPOLOGY info available, use -I to display
# pmu mappings: intel_bts = 6, cpu = 4, msr = 49, uncore_cbox_10 = 36, [SNIP]
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.000 MB - ]
...
Only patches 14 to 16 have a significant effect in user observed behavior.
All other are transparent preparatory changes or bug fixes.
David Carrillo-Cisneros (16):
perf header: encapsulate read and swap
perf header: add PROCESS_STR_FUN macro
perf header: fail on write_padded error
perf util: add const modifier to buf in "writen" function
perf header: revamp do_write
perf header: add struct feat_fd for write
perf header: use struct feat_fd for print
perf header: use struct feat_fd to process header records
perf header: don't pass struct perf_file_section to process_##_feat
perf header: use struct feat_fd in read header records
perf header: make write_pmu_mappings pipe-mode friendly
perf header: add a buffer to struct feat_fd
perf header: change FEAT_OP* macros
perf tool: add show_feature_header to perf_tool
perf tools: add feature header record to pipe-mode
perf header: add event desc to pipe-mode header
tools/perf/Documentation/perf.data-file-format.txt | 10 +-
tools/perf/builtin-annotate.c | 1 +
tools/perf/builtin-inject.c | 1 +
tools/perf/builtin-record.c | 7 +
tools/perf/builtin-report.c | 12 +-
tools/perf/builtin-script.c | 4 +
tools/perf/util/build-id.c | 10 +-
tools/perf/util/build-id.h | 4 +-
tools/perf/util/event.c | 1 +
tools/perf/util/event.h | 8 +
tools/perf/util/header.c | 1009 +++++++++++---------
tools/perf/util/header.h | 16 +-
tools/perf/util/session.c | 4 +
tools/perf/util/tool.h | 10 +-
tools/perf/util/util.c | 6 +-
tools/perf/util/util.h | 2 +-
16 files changed, 634 insertions(+), 471 deletions(-)
--
2.13.1.508.gb3defc5cc-goog
next reply other threads:[~2017-06-13 4:30 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-13 4:29 David Carrillo-Cisneros [this message]
2017-06-13 4:29 ` [PATCH v4 01/16] perf header: encapsulate read and swap David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 02/16] perf header: add PROCESS_STR_FUN macro David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 03/16] perf header: fail on write_padded error David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 04/16] perf util: add const modifier to buf in "writen" function David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 05/16] perf header: revamp do_write David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 06/16] perf header: add struct feat_fd for write David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 07/16] perf header: use struct feat_fd for print David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 08/16] perf header: use struct feat_fd to process header records David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 09/16] perf header: don't pass struct perf_file_section to process_##_feat David Carrillo-Cisneros
2017-06-13 18:54 ` Jiri Olsa
2017-06-14 1:51 ` David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 10/16] perf header: use struct feat_fd in read header records David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 11/16] perf header: make write_pmu_mappings pipe-mode friendly David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 12/16] perf header: add a buffer to struct feat_fd David Carrillo-Cisneros
2017-06-13 18:54 ` Jiri Olsa
2017-06-14 1:54 ` David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 13/16] perf header: change FEAT_OP* macros David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 14/16] perf tool: add show_feature_header to perf_tool David Carrillo-Cisneros
2017-06-13 18:55 ` Jiri Olsa
2017-06-13 4:29 ` [PATCH v4 15/16] perf tools: add feature header record to pipe-mode David Carrillo-Cisneros
2017-06-13 18:54 ` Jiri Olsa
2017-06-13 18:54 ` Jiri Olsa
2017-07-12 0:32 ` David Carrillo-Cisneros
2017-07-12 7:38 ` Jiri Olsa
2017-07-18 4:37 ` David Carrillo-Cisneros
2017-06-13 4:29 ` [PATCH v4 16/16] perf header: add event desc to pipe-mode header David Carrillo-Cisneros
2017-06-13 18:54 ` [PATCH v4 00/16] perf tool: add meta-data header support for pipe-mode Jiri Olsa
2017-06-14 6:44 ` David Carrillo-Cisneros
2017-06-13 18:55 ` Jiri Olsa
2017-06-14 6:51 ` David Carrillo-Cisneros
2017-06-14 7:20 ` Jiri Olsa
2017-06-14 18:36 ` David Carrillo-Cisneros
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170613042932.141842-1-davidcc@google.com \
--to=davidcc@google.com \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=eranian@google.com \
--cc=hekuang@huawei.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=sque@chromium.org \
--cc=wangnan0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox