aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/ui
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2011-09-01 13:27:58 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2011-09-29 15:41:38 -0400
commitdcc101d1d02eb80ab0349c5410f8728412c35636 (patch)
tree9f91b0f6da160c767bee572296e59a46017c25e7 /tools/perf/util/ui
parenteb489008312c848dce8ff76282b8e65c530c2e26 (diff)
perf top: Improve lost events warning
Now it warns everytime that new events are lost. And the TUI also warns now. Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-w1n168yrvrppnq6887s4u0wx@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/ui')
-rw-r--r--tools/perf/util/ui/browsers/top.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/tools/perf/util/ui/browsers/top.c b/tools/perf/util/ui/browsers/top.c
index 9d938106510f..9b6b43b32ac8 100644
--- a/tools/perf/util/ui/browsers/top.c
+++ b/tools/perf/util/ui/browsers/top.c
@@ -11,10 +11,12 @@
11#include "../helpline.h" 11#include "../helpline.h"
12#include "../libslang.h" 12#include "../libslang.h"
13#include "../util.h" 13#include "../util.h"
14#include "../ui.h"
14#include "../../evlist.h" 15#include "../../evlist.h"
15#include "../../hist.h" 16#include "../../hist.h"
16#include "../../sort.h" 17#include "../../sort.h"
17#include "../../symbol.h" 18#include "../../symbol.h"
19#include "../../session.h"
18#include "../../top.h" 20#include "../../top.h"
19 21
20struct perf_top_browser { 22struct perf_top_browser {
@@ -143,6 +145,25 @@ do_annotation:
143 symbol__tui_annotate(sym, syme->map, 0, top->delay_secs * 1000); 145 symbol__tui_annotate(sym, syme->map, 0, top->delay_secs * 1000);
144} 146}
145 147
148static void perf_top_browser__warn_lost(struct perf_top_browser *browser)
149{
150 struct perf_top *top = browser->b.priv;
151 char msg[128];
152 int len;
153
154 top->total_lost_warned = top->session->hists.stats.total_lost;
155 pthread_mutex_lock(&ui__lock);
156 ui_browser__set_color(&browser->b, HE_COLORSET_TOP);
157 len = snprintf(msg, sizeof(msg),
158 " WARNING: LOST %" PRIu64 " events, Check IO/CPU overload",
159 top->total_lost_warned);
160 if (len > browser->b.width)
161 len = browser->b.width;
162 SLsmg_gotorc(0, browser->b.width - len);
163 slsmg_write_nstring(msg, len);
164 pthread_mutex_unlock(&ui__lock);
165}
166
146static int perf_top_browser__run(struct perf_top_browser *browser) 167static int perf_top_browser__run(struct perf_top_browser *browser)
147{ 168{
148 int key; 169 int key;
@@ -174,6 +195,9 @@ static int perf_top_browser__run(struct perf_top_browser *browser)
174 ui_browser__set_color(&browser->b, NEWT_COLORSET_ROOT); 195 ui_browser__set_color(&browser->b, NEWT_COLORSET_ROOT);
175 SLsmg_gotorc(0, 0); 196 SLsmg_gotorc(0, 0);
176 slsmg_write_nstring(title, browser->b.width); 197 slsmg_write_nstring(title, browser->b.width);
198
199 if (top->total_lost_warned != top->session->hists.stats.total_lost)
200 perf_top_browser__warn_lost(browser);
177 break; 201 break;
178 case 'a': 202 case 'a':
179 case NEWT_KEY_RIGHT: 203 case NEWT_KEY_RIGHT: