Skip to contentSkip to conversation

perf/urgent fix

GIT PULL New Arnaldo Carvalho de Melo 2 participants 3 messages Nov 28, 2014 – Dec 8, 2014 perf events

lore
Share & tools
lore

Arnaldo Carvalho de Melo

author maintainer
#0 lore raw

Hi Ingo,

Please consider pulling,

- Arnaldo

The following changes since commit 7ddc6a2199f1da405a2fb68c40db8899b1a8cd87:

x86/asm/traps: Disable tracing and kprobes in fixup_bad_iret and sync_regs (2014-11-25 07:26:55 +0100)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-urgent-for-mingo

for you to fetch changes up to f61ff6c06dc8f32c7036013ad802c899ec590607:

perf session: Do not fail on processing out of order event (2014-11-28 18:19:37 -0300)

----------------------------------------------------------------
perf/urgent fix:

* Do not stop processing when out of order events are detected, just count them and notify the user about it after processing all events. (Jiri Olsa)

----------------------------------------------------------------
Jiri Olsa (1):
perf session: Do not fail on processing out of order event

 tools/perf/util/event.h   |  1 +
 tools/perf/util/session.c | 11 +++++------
 2 files changed, 6 insertions(+), 6 deletions(-)
author maintainer
#1 lore raw

PATCH 1/1 perf session: Do not fail on processing out of order event

From: Jiri Olsa <[email protected]>

Linus reported perf report command being interrupted due to processing of 'out of order' event, with following error:

Timestamp below last timeslice flush
0x5733a8 [0x28]: failed to process type: 3

I could reproduce the issue and in my case it was caused by one CPU (mmap) being behind during record and userspace mmap reader seeing the data after other CPUs data were already stored.

This is expected under some circumstances because we need to limit the number of events that we queue for reordering when we receive a PERF_RECORD_FINISHED_ROUND or when we force flush due to memory pressure.

Cc Andi Kleen <[email protected]>
Cc Corey Ashford <[email protected]>
Cc David Ahern <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Linus Torvalds <[email protected]>
Cc Matt Fleming <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
---
 tools/perf/util/event.h   |  1 +
 tools/perf/util/session.c | 11 +++++------
 2 files changed, 6 insertions(+), 6 deletions(-)
tools/perf/util/event.h +1 -0
index 5699e7e2a790..50a7b115698c 100644
@@ -214,6 +214,7 @@ struct events_stats {
 	u32 nr_invalid_chains;
 	u32 nr_unknown_id;
 	u32 nr_unprocessable_samples;
+	u32 nr_unordered_events;
 };
 
 struct attr_event {
tools/perf/util/session.c +5 -6
index 6702ac28754b..80dbba095f30 100644
@@ -521,15 +521,11 @@ int perf_session_queue_event(struct perf_session *s, union perf_event *event,
 		return -ETIME;
 
 	if (timestamp < oe->last_flush) {
-		WARN_ONCE(1, "Timestamp below last timeslice flush\n");
-
-		pr_oe_time(timestamp,      "out of order event");
+		pr_oe_time(timestamp,      "out of order event\n");
 		pr_oe_time(oe->last_flush, "last flush, last_flush_type %d\n",
 			   oe->last_flush_type);
 
-		/* We could get out of order messages after forced flush. */
-		if (oe->last_flush_type != OE_FLUSH__HALF)
-			return -EINVAL;
+		s->stats.nr_unordered_events++;
 	}
 
 	new = ordered_events__new(oe, timestamp, event);
@@ -1057,6 +1053,9 @@ static void perf_session__warn_about_errors(const struct perf_session *session,
 			    "Do you have a KVM guest running and not using 'perf kvm'?\n",
 			    session->stats.nr_unprocessable_samples);
 	}
+
+	if (session->stats.nr_unordered_events != 0)
+		ui__warning("%u out of order events recorded.\n", session->stats.nr_unordered_events);
 }
 
 volatile int session_done;
Signature · 1 line
1.9.3
#2 lore raw
In reply to Arnaldo Carvalho de Melo
Quoted 26 lines · Arnaldo Carvalho de Melo

Hi Ingo,

Please consider pulling,

- Arnaldo

The following changes since commit 7ddc6a2199f1da405a2fb68c40db8899b1a8cd87:

x86/asm/traps: Disable tracing and kprobes in fixup_bad_iret and sync_regs (2014-11-25 07:26:55 +0100)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-urgent-for-mingo

for you to fetch changes up to f61ff6c06dc8f32c7036013ad802c899ec590607:

perf session: Do not fail on processing out of order event (2014-11-28 18:19:37 -0300)

----------------------------------------------------------------
perf/urgent fix:

* Do not stop processing when out of order events are detected, just count them and notify the user about it after processing all events. (Jiri Olsa)

Quoted 7 lines

----------------------------------------------------------------
Jiri Olsa (1):
perf session: Do not fail on processing out of order event

 tools/perf/util/event.h   |  1 +
 tools/perf/util/session.c | 11 +++++------
 2 files changed, 6 insertions(+), 6 deletions(-)

Pulled, thanks a lot Arnaldo!

Ingo