From: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
To: David Ahern <dsahern@gmail.com>
Cc: Yunlong Song <yunlong.song@huawei.com>,
a.p.zijlstra@chello.nl, paulus@samba.org, mingo@redhat.com,
linux-kernel@vger.kernel.org, wangnan0@huawei.com,
namhyung@kernel.org, ast@kernel.org,
masami.hiramatsu.pt@hitachi.com, kan.liang@intel.com,
adrian.hunter@intel.com, jolsa@kernel.org, bp@alien8.de,
jean.pihet@linaro.org, rric@kernel.org, xiakaixu@huawei.com,
hekuang@huawei.com
Subject: Re: [PATCH] perf record: Add snapshot mode support for perf's regular events
Date: Tue, 24 Nov 2015 12:40:25 -0300 [thread overview]
Message-ID: <20151124154025.GF18140@kernel.org> (raw)
In-Reply-To: <56548117.9080704@gmail.com>
Em Tue, Nov 24, 2015 at 08:24:07AM -0700, David Ahern escreveu:
> On 11/24/15 8:20 AM, Arnaldo Carvalho de Melo wrote:
> >Em Tue, Nov 24, 2015 at 08:06:41AM -0700, David Ahern escreveu:
> >>On 11/24/15 7:00 AM, Yunlong Song wrote:
> >>>+static int record__write(struct record *rec, void *bf, size_t size)
> >>>+{
> >>>+ if (rec->memory.size && memory_enabled) {
> >>>+ if (perf_memory__write(&rec->memory, bf, size) < 0) {
> >>>+ pr_err("failed to write memory data, error: %m\n");
> >>>+ return -1;
> >>>+ }
> >>>+ } else {
> >>>+ if (perf_data_file__write(rec->session->file, bf, size) < 0) {
> >>>+ pr_err("failed to write perf data, error: %m\n");
> >>>+ return -1;
> >>>+ }
> >>>+ rec->bytes_written += size;
> >>> }
> >>>
> >>>- rec->bytes_written += size;
> >>> return 0;
> >>> }
> >>>
> >>>@@ -86,6 +214,8 @@ static int record__mmap_read(struct record *rec, int idx)
> >>> if (old == head)
> >>> return 0;
> >>>
> >>>+ memory_enabled = 1;
> >>>+
> >>> rec->samples++;
> >>>
> >>> size = head - old;
> >>>@@ -113,6 +243,7 @@ static int record__mmap_read(struct record *rec, int idx)
> >>> md->prev = old;
> >>> perf_evlist__mmap_consume(rec->evlist, idx);
> >>> out:
> >>>+ memory_enabled = 0;
> >>> return rc;
> >>> }
> >>>
> >>
> >>So you are basically ignoring all samples until SIGUSR2 is received. That
> >
> >No, he is not, its just that his code is difficult to follow, has to be
> >rewritten, but he is ignoring just PERF_RECORD_SAMPLE events, so it
> >will..
> >>means the resulting data file will have limited history of task events for
> >... have a complete history of task events, since PERF_RECORD_FORK, etc
> >are not being ignored.
> >No?
> perf-record does not process events, it only writes to a file. If that is
> skipped then it skips all events regardless of type.
perf-record without his patch? yes, but with his patch it does:
__cmd_record()
for (;;)
record__mmap_read_all()
record__write()
perf_memory__write()
event = (union perf_event *)(memory->start + memory->head + skip);
if (event->header.type != PERF_RECORD_SAMPLE) {
if (buf_to_file(rec, memory->start, memory->size,
}
I almost thought that I had been fooled by the difficulty to follow his
patch and was forgetting that 'perf record' doesn't processes events,
and hasn't done so for a very good reason: to reduce its impact on the
observed workload, but that ain't so, no?
So, when not snapshotting, what you said remains true:
static int record__write(struct record *rec, void *bf, size_t size)
{
if (rec->memory.size && memory_enabled) {
if (perf_memory__write(&rec->memory, bf, size) < 0) {
pr_err("failed to write memory data, error: %m\n");
return -1;
}
} else {
if (perf_data_file__write(rec->session->file, bf, size) < 0) {
I'll continue taking the else branch and in that case, no events are
processed, we just dump that bf into the rec->session->file and go on
with life.
- Arnaldo
next prev parent reply other threads:[~2015-11-24 15:40 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-24 14:00 [PATCH] perf record: Add snapshot mode support for perf's regular events Yunlong Song
2015-11-24 14:00 ` Yunlong Song
2015-11-24 14:30 ` Arnaldo Carvalho de Melo
2015-11-25 12:44 ` Yunlong Song
2015-11-24 15:06 ` David Ahern
2015-11-24 15:20 ` Arnaldo Carvalho de Melo
2015-11-24 15:24 ` David Ahern
2015-11-24 15:40 ` Arnaldo Carvalho de Melo [this message]
2015-11-24 16:16 ` David Ahern
2015-11-25 3:50 ` Wangnan (F)
2015-11-25 5:06 ` David Ahern
2015-11-25 7:22 ` Adrian Hunter
2015-11-25 7:47 ` Wangnan (F)
2015-11-25 8:27 ` Adrian Hunter
2015-11-25 8:43 ` Wangnan (F)
2015-11-25 9:05 ` Adrian Hunter
2015-11-25 7:50 ` Yunlong Song
2015-11-25 9:27 ` Peter Zijlstra
2015-11-25 9:44 ` Wangnan (F)
2015-11-25 12:20 ` Peter Zijlstra
2015-11-25 12:54 ` Wangnan (F)
2015-11-26 9:19 ` Ingo Molnar
2015-11-26 9:24 ` Wangnan (F)
2015-11-26 9:27 ` Ingo Molnar
2015-11-26 9:40 ` Ingo Molnar
2015-11-26 9:57 ` Ingo Molnar
2015-12-02 8:25 ` Wangnan (F)
2015-12-02 13:38 ` [RFC PATCH] perf/core: Put size of a sample at the end of it Wang Nan
2015-12-03 10:08 ` Peter Zijlstra
2015-12-03 10:31 ` Wangnan (F)
2015-12-07 13:28 ` [RFC PATCH v2 0/3] perf core/perf tools: Utilizing overwrite ring buffer Wang Nan
2015-12-07 13:28 ` [RFC PATCH v2 1/3] perf/core: Put size of a sample at the end of it Wang Nan
2015-12-07 13:28 ` [RFC PATCH v2 2/3] perf tools: Enable overwrite settings Wang Nan
2015-12-07 13:28 ` [RFC PATCH v2 3/3] perf record: Find tail pointer through size at end of event Wang Nan
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=20151124154025.GF18140@kernel.org \
--to=arnaldo.melo@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=adrian.hunter@intel.com \
--cc=ast@kernel.org \
--cc=bp@alien8.de \
--cc=dsahern@gmail.com \
--cc=hekuang@huawei.com \
--cc=jean.pihet@linaro.org \
--cc=jolsa@kernel.org \
--cc=kan.liang@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=paulus@samba.org \
--cc=rric@kernel.org \
--cc=wangnan0@huawei.com \
--cc=xiakaixu@huawei.com \
--cc=yunlong.song@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;
as well as URLs for NNTP newsgroup(s).