All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.