diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-09-01 13:27:58 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-09-29 15:41:38 -0400 |
commit | dcc101d1d02eb80ab0349c5410f8728412c35636 (patch) | |
tree | 9f91b0f6da160c767bee572296e59a46017c25e7 /tools/perf/util/ui | |
parent | eb489008312c848dce8ff76282b8e65c530c2e26 (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.c | 24 |
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 | ||
20 | struct perf_top_browser { | 22 | struct 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 | ||
148 | static 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 | |||
146 | static int perf_top_browser__run(struct perf_top_browser *browser) | 167 | static 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: |