From d7718e9e6e410a9c343466149461083fedaa45a6 Mon Sep 17 00:00:00 2001 From: David Miller Date: Mon, 27 May 2019 13:48:22 +0000 Subject: [PATCH] perf top: Start display thread earlier mainline inclusion from mainline-4.20-rc1 commit ff27a06af6ffd3f49b9e193eb68f487ad76651e1 category: bugfix bugzilla: NA CVE: NA ------------------------------------------------- If events are coming in at a rate such that the event processing thread can barely keep up, our initial run of the event ring will almost never terminate and this delays the starting of the display thread. The screen basically stays black until the event thread can get out of it's endless loop. Therefore, start the display thread before we start processing the ring buffer. This also make sure that we always have the user requested real time setting engaged when processing the ring. Signed-off-by: David S. Miller Tested-by: Arnaldo Carvalho de Melo Cc: Jiri Olsa Cc: Kan Liang Cc: Namhyung Kim Link: http://lkml.kernel.org/r/20181030.223003.2242527041807905962.davem@davemloft.net Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: Chunmei Xu Reviewed-by: Wei Li Signed-off-by: Yang Yingliang --- tools/perf/builtin-top.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index 5f22423a0230..1eca45190360 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -1135,11 +1135,6 @@ static int __cmd_top(struct perf_top *top) if (!target__none(&opts->target)) perf_evlist__enable(top->evlist); - /* Wait for a minimal set of events before starting the snapshot */ - perf_evlist__poll(top->evlist, 100); - - perf_top__mmap_read(top); - ret = -1; if (pthread_create(&thread, NULL, (use_browser > 0 ? display_thread_tui : display_thread), top)) { @@ -1157,6 +1152,11 @@ static int __cmd_top(struct perf_top *top) } } + /* Wait for a minimal set of events before starting the snapshot */ + perf_evlist__poll(top->evlist, 100); + + perf_top__mmap_read(top); + while (!done) { u64 hits = top->samples; -- GitLab