From: Ian Munsie <imunsie@au1.ibm.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Ingo Molnar <mingo@elte.hu>
Subject: Re: [patch 9/9] pref: session: Break event ordering when timestamps are missing
Date: Thu, 09 Dec 2010 14:50:14 +1100 [thread overview]
Message-ID: <1291865671-sup-8975@au1.ibm.com> (raw)
In-Reply-To: <20101207124551.209741779@linutronix.de>
Excerpts from Thomas Gleixner's message of Tue Dec 07 12:49:04 UTC 2010:
> Allow the session client to specify that event ordering should be
> stopped when not all events have time stamps.
> /* These events are processed right away */
> switch (event->header.type) {
> case PERF_RECORD_HEADER_ATTR:
> - return ops->attr(event, session);
> + /* This updates session->sample_id_all */
> + ret = ops->attr(event, session);
> + /* Break ordering if sample_id_all is false */
> + if (ops->ordering_requires_timestamps &&
> + ops->ordered_samples && !session->sample_id_all) {
> + session->ordered_samples.next_flush = ULLONG_MAX;
> + flush_sample_queue(session, ops);
> + ops->ordered_samples = false;
> + }
> + return ret;
This fallback still relies on receiving a PERF_RECORD_HEADER_ATTR, which
will only happen if the output is being piped:
$ git grep event__synthesize_attr
builtin-record.c: err = event__synthesize_attrs(&session->header,
util/header.c:int event__synthesize_attr(struct perf_event_attr *attr, u16 ids, u64 *id,
util/header.c:int event__synthesize_attrs(struct perf_header *self, event__handler_t process,
util/header.c: err = event__synthesize_attr(&attr->attr, attr->ids, attr->id,
util/header.h:int event__synthesize_attr(struct perf_event_attr *attr, u16 ids, u64 *id,
util/header.h:int event__synthesize_attrs(struct perf_header *self,
$ less builtin-record.c
<SNIP>
if (pipe_output) {
err = event__synthesize_attrs(&session->header,
process_synthesized_event,
session);
<SNIP>
So this will work in this situation (timestamps on samples, but this is
an old kernel so not on other events):
delenn% ./perf record -T -o - ~/tests/cachetest | ./perf report -i -
Initialising array...
Trying approach 1: 0x18fff7eb26fd058
Trying approach 2: 0x18fff7eb26fd058
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.081 MB - (~3549 samples) ]
# Events: 1K cycles
#
# Overhead Command Shared Object Symbol
# ........ ....... ................. .......................
#
70.23% cachetest cachetest [.] sumArrayNaive
28.54% cachetest cachetest [.] sumArrayOptimal
0.43% cachetest [kernel.kallsyms] [k] insert_work
0.39% cachetest [kernel.kallsyms] [k] machine_kexec_prepare
0.35% cachetest libc-2.11.2.so [.] __random
0.06% cachetest [kernel.kallsyms] [k] print_cfs_rq
0.01% cachetest [kernel.kallsyms] [k] __register_sysctl_paths
#
# (For a higher level overview, try: perf report --sort comm,dso)
#
But will fail in this case:
delenn% ./perf record -T ~/tests/cachetest ~/linus/tools/perf
Initialising array...
Trying approach 1: 0x18fff7eb26fd058
Trying approach 2: 0x18fff7eb26fd058
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.081 MB perf.data (~3543 samples) ]
delenn% ./perf report|cat ~/linus/tools/perf
# Events: 1K cycles
#
# Overhead Command Shared Object Symbol
# ........ ....... ................. .......................
#
99.47% :5593 [unknown] [.] 0xf770cff5
0.48% :5593 [kernel.kallsyms] [k] hpet_next_event
0.05% :5593 [libahci] [k] ahci_scr_read
0.01% :5593 [kernel.kallsyms] [k] flush_signal_handlers
0.00% :5593 [kernel.kallsyms] [k] native_write_msr_safe
#
# (For a higher level overview, try: perf report --sort comm,dso)
#
Since the fall back isn't triggered, not only are COMM and MMAP events
processed first (from patch 2 in this series), but EXIT will as well,
which causes no userspace events to be attributed.
Cheers,
-Ian
next prev parent reply other threads:[~2010-12-09 3:50 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-07 12:48 [patch 0/9] perf: Consolidate the event handling and ordering Thomas Gleixner
2010-12-07 12:48 ` [patch 1/9] perf: tools: Prevent unbound event__name array access Thomas Gleixner
2010-12-09 23:37 ` [tip:perf/core] perf event: " tip-bot for Thomas Gleixner
2010-12-07 12:48 ` [patch 2/9] perf: session: Dont queue events w/o timestamps Thomas Gleixner
2010-12-09 23:37 ` [tip:perf/core] perf " tip-bot for Thomas Gleixner
2010-12-07 12:48 ` [patch 3/9] perf: session: Consolidate the dump code Thomas Gleixner
2010-12-09 3:54 ` Ian Munsie
2010-12-09 23:37 ` [tip:perf/core] perf " tip-bot for Thomas Gleixner
2010-12-07 12:48 ` [patch 4/9] perf: session: Store file offset in sample_queue Thomas Gleixner
2010-12-09 3:56 ` Ian Munsie
2010-12-09 23:38 ` [tip:perf/core] perf " tip-bot for Thomas Gleixner
2010-12-07 12:48 ` [patch 5/9] perf: session: Add file_offset to event delivery function Thomas Gleixner
2010-12-09 3:57 ` Ian Munsie
2010-12-09 23:38 ` [tip:perf/core] perf " tip-bot for Thomas Gleixner
2010-12-07 12:48 ` [patch 6/9] perf: session: Move dump code to event delivery path Thomas Gleixner
2010-12-09 3:58 ` Ian Munsie
2010-12-09 23:38 ` [tip:perf/core] perf " tip-bot for Thomas Gleixner
2010-12-07 12:48 ` [patch 7/9] perf: session: Split out sample preprocessing Thomas Gleixner
2010-12-09 23:39 ` [tip:perf/core] perf " tip-bot for Thomas Gleixner
2010-12-07 12:49 ` [patch 8/9] perf: session: Split out user event processing Thomas Gleixner
2010-12-09 23:39 ` [tip:perf/core] perf " tip-bot for Thomas Gleixner
2010-12-07 12:49 ` [patch 9/9] pref: session: Break event ordering when timestamps are missing Thomas Gleixner
2010-12-09 3:50 ` Ian Munsie [this message]
2010-12-09 13:58 ` Thomas Gleixner
2010-12-09 17:32 ` Arnaldo Carvalho de Melo
2010-12-10 3:36 ` Ian Munsie
2010-12-22 11:29 ` [tip:perf/core] perf session: Fallback to unordered processing if no sample_id_all tip-bot for Ian Munsie
2010-12-08 20:24 ` [patch 0/9] perf: Consolidate the event handling and ordering Arnaldo Carvalho de Melo
2010-12-09 5:54 ` Ian Munsie
2010-12-09 5:33 ` [PATCH v4] perf record,report,annotate,diff: Process events in order Ian Munsie
2010-12-22 11:29 ` [tip:perf/core] " tip-bot for Ian Munsie
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=1291865671-sup-8975@au1.ibm.com \
--to=imunsie@au1.ibm.com \
--cc=acme@redhat.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/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