Re: [PATCH] perf session: Do not fail on processing out of order event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 13, 2015 at 12:47:59PM +0000, Zhiqiang Zhang wrote:
> From:Jiri Olsa <jolsa@xxxxxxxxxx>
> 
> commit f61ff6c06dc8f32c7036013ad802c899ec590607 upstream
>

Thank you, I'll queue this for the 3.16 kernel as well.

Cheers,
--
Luís

> 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.
> 
> Reported-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
> Acked-by: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx>
> Cc: Corey Ashford <cjashfor@xxxxxxxxxxxxxxxxxx>
> Cc: David Ahern <dsahern@xxxxxxxxx>
> Cc: Frederic Weisbecker <fweisbec@xxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Cc: Matt Fleming <matt.fleming@xxxxxxxxx>
> Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
> Cc: Paul Mackerras <paulus@xxxxxxxxx>
> Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
> Cc: Stephane Eranian <eranian@xxxxxxxxxx>
> Link: http://lkml.kernel.org/r/1417016371-30249-1-git-send-email-jolsa@xxxxxxxxxx
> Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
> 
> [zhangzhiqiang: backport to 3.10:
>  - adjust context
>  - commit f61ff6c06d struct events_stats was defined in tools/perf/util/event.h
>    while 3.10 stable defined in tools/perf/util/hist.h.
>  - 3.10 stable there is no pr_oe_time() which used for debug.
>  - After the above adjustments, becomes same to the original patch:
>    https://github.com/torvalds/linux/commit/f61ff6c06dc8f32c7036013ad802c899ec590607
> ]
> 
> Signed-off-by: Zhiqiang Zhang <zhangzhiqiang.zhang@xxxxxxxxxx>
> ---
>  tools/perf/util/hist.h    | 1 +
>  tools/perf/util/session.c | 5 +++--
>  2 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
> index 14c2fe2..20764e0 100644
> --- a/tools/perf/util/hist.h
> +++ b/tools/perf/util/hist.h
> @@ -34,6 +34,7 @@ struct events_stats {
>  	u32 nr_invalid_chains;
>  	u32 nr_unknown_id;
>  	u32 nr_unprocessable_samples;
> +	u32 nr_unordered_events;
>  };
>  
>  enum hist_column {
> diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
> index e392202..6f593a7 100644
> --- a/tools/perf/util/session.c
> +++ b/tools/perf/util/session.c
> @@ -656,8 +656,7 @@ static int perf_session_queue_event(struct perf_session *s, union perf_event *ev
>  		return -ETIME;
>  
>  	if (timestamp < s->ordered_samples.last_flush) {
> -		printf("Warning: Timestamp below last timeslice flush\n");
> -		return -EINVAL;
> +		s->stats.nr_unordered_events++;
>  	}
>  
>  	if (!list_empty(sc)) {
> @@ -1057,6 +1056,8 @@ 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);
>  }
>  
>  #define session_done()	(*(volatile int *)(&session_done))
> -- 
> 1.8.3.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]