Messages in this thread Patch in this message | | | Date | Fri, 26 Nov 2010 23:59:26 -0200 | From | Arnaldo Carvalho de Melo <> | Subject | [PATCH 5/5] perf tools: Fix lost and unknown events handling |
| |
Ingo,
I added this one and removed the GCC optimization (alloc_size attribute), please consider pulling from:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core
Thomas, I hope this one is better?
At some point I'll work on i18n these messages...
- Arnaldo
---------------------------------------------------------------------------
Fix it by explaining what can be happening and giving the number of processed and lost events.
Also holler if unknown events were found, that can be due to processing a perf.data file collected using a newer tool where newer events got added on reporting using an older perf tool, that or a bug, so ask for a report to be made.
Works on both --tui and --stdio.
Suggested-by: Thomas Gleixner <tglx@linutronix.de> Cc: Frédéric Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> Cc: Stephane Eranian <eranian@google.com> Cc: Thomas Gleixner <tglx@linutronix.de> LKML-Reference: <new-submission> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/debug.c | 11 +++++++++++ tools/perf/util/debug.h | 2 ++ tools/perf/util/session.c | 18 ++++++++++++++++++ tools/perf/util/ui/util.c | 16 +++++++++++++++- 4 files changed, 46 insertions(+), 1 deletions(-)
diff --git a/tools/perf/util/debug.c b/tools/perf/util/debug.c index c8d81b0..e5161e8 100644 --- a/tools/perf/util/debug.c +++ b/tools/perf/util/debug.c @@ -46,6 +46,17 @@ int dump_printf(const char *fmt, ...) return ret; } +#ifdef NO_NEWT_SUPPORT +void ui__warning(const char *format, ...) +{ + va_list args; + + va_start(args, format); + vfprintf(stderr, format, args); + va_end(args); +} +#endif + static int dump_printf_color(const char *fmt, const char *color, ...) { va_list args; diff --git a/tools/perf/util/debug.h b/tools/perf/util/debug.h index 7b51408..ca35fd6 100644 --- a/tools/perf/util/debug.h +++ b/tools/perf/util/debug.h @@ -35,4 +35,6 @@ int ui_helpline__show_help(const char *format, va_list ap); #include "ui/progress.h" #endif +void ui__warning(const char *format, ...) __attribute__((format(printf, 1, 2))); + #endif /* __PERF_DEBUG_H */ diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 3d56047..3ae6955 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -852,6 +852,24 @@ done: flush_sample_queue(self, ops); out_err: ui_progress__delete(progress); + + if (ops->lost == event__process_lost && + self->hists.stats.total_lost != 0) { + ui__warning("Processed %Lu events and LOST %Lu!\n\n" + "Check IO/CPU overload!\n\n", + self->hists.stats.total_period, + self->hists.stats.total_lost); + } + + if (self->hists.stats.nr_unknown_events != 0) { + ui__warning("Found %u unknown events!\n\n" + "Is this an older tool processing a perf.data " + "file generated by a more recent tool?\n\n" + "If that is not the case, consider " + "reporting to linux-kernel@vger.kernel.org.\n\n", + self->hists.stats.nr_unknown_events); + } + return err; } diff --git a/tools/perf/util/ui/util.c b/tools/perf/util/ui/util.c index 056c695..7b5a892 100644 --- a/tools/perf/util/ui/util.c +++ b/tools/perf/util/ui/util.c @@ -104,10 +104,24 @@ out_destroy_form: return rc; } -static const char yes[] = "Yes", no[] = "No"; +static const char yes[] = "Yes", no[] = "No", + warning_str[] = "Warning!", ok[] = "Ok"; bool ui__dialog_yesno(const char *msg) { /* newtWinChoice should really be accepting const char pointers... */ return newtWinChoice(NULL, (char *)yes, (char *)no, (char *)msg) == 1; } + +void ui__warning(const char *format, ...) +{ + va_list args; + + va_start(args, format); + if (use_browser > 0) + newtWinMessagev((char *)warning_str, (char *)ok, + (char *)format, args); + else + vfprintf(stderr, format, args); + va_end(args); +} -- 1.7.1.rc2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |