perf top: Add a visual cue for toggle zeroing of samples
When 'perf top' is run, one can't easily find a difference between -z option and normal output. So I added a visual cue to know whether it is the zeroing or not. Output is as below. Before: $ perf top Samples: 61K of event 'cycles', Event count (approx.): 3908136933 Overhead Shared Object Symbol 1.42% firefox [.] 0x0000000000011e76 1.32% libpthread-2.17.so [.] pthread_mutex_lock If you press key 'z' or run with zero option like '$ perf top --zero', it is as below. After: Samples: 61K of event 'cycles', Event count (approx.): 3908136933 [z] Overhead Shared Object Symbol 1.42% firefox [.] 0x0000000000011e76 1.32% libpthread-2.17.so [.] pthread_mutex_lock Signed-off-by: Taeung Song <treeze.taeung@gmail.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1412665995-26359-1-git-send-email-treeze.taeung@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
ec4212d88a
commit
1e378ebd11
1 changed files with 22 additions and 10 deletions
|
@ -35,7 +35,9 @@ struct hist_browser {
|
||||||
|
|
||||||
extern void hist_browser__init_hpp(void);
|
extern void hist_browser__init_hpp(void);
|
||||||
|
|
||||||
static int hists__browser_title(struct hists *hists, char *bf, size_t size);
|
static int hists__browser_title(struct hists *hists,
|
||||||
|
struct hist_browser_timer *hbt,
|
||||||
|
char *bf, size_t size);
|
||||||
static void hist_browser__update_nr_entries(struct hist_browser *hb);
|
static void hist_browser__update_nr_entries(struct hist_browser *hb);
|
||||||
|
|
||||||
static struct rb_node *hists__filter_entries(struct rb_node *nd,
|
static struct rb_node *hists__filter_entries(struct rb_node *nd,
|
||||||
|
@ -390,7 +392,7 @@ static int hist_browser__run(struct hist_browser *browser,
|
||||||
browser->b.entries = &browser->hists->entries;
|
browser->b.entries = &browser->hists->entries;
|
||||||
browser->b.nr_entries = hist_browser__nr_entries(browser);
|
browser->b.nr_entries = hist_browser__nr_entries(browser);
|
||||||
|
|
||||||
hists__browser_title(browser->hists, title, sizeof(title));
|
hists__browser_title(browser->hists, hbt, title, sizeof(title));
|
||||||
|
|
||||||
if (ui_browser__show(&browser->b, title,
|
if (ui_browser__show(&browser->b, title,
|
||||||
"Press '?' for help on key bindings") < 0)
|
"Press '?' for help on key bindings") < 0)
|
||||||
|
@ -417,7 +419,8 @@ static int hist_browser__run(struct hist_browser *browser,
|
||||||
ui_browser__warn_lost_events(&browser->b);
|
ui_browser__warn_lost_events(&browser->b);
|
||||||
}
|
}
|
||||||
|
|
||||||
hists__browser_title(browser->hists, title, sizeof(title));
|
hists__browser_title(browser->hists,
|
||||||
|
hbt, title, sizeof(title));
|
||||||
ui_browser__show_title(&browser->b, title);
|
ui_browser__show_title(&browser->b, title);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1204,7 +1207,15 @@ static struct thread *hist_browser__selected_thread(struct hist_browser *browser
|
||||||
return browser->he_selection->thread;
|
return browser->he_selection->thread;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hists__browser_title(struct hists *hists, char *bf, size_t size)
|
/* Check whether the browser is for 'top' or 'report' */
|
||||||
|
static inline bool is_report_browser(void *timer)
|
||||||
|
{
|
||||||
|
return timer == NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int hists__browser_title(struct hists *hists,
|
||||||
|
struct hist_browser_timer *hbt,
|
||||||
|
char *bf, size_t size)
|
||||||
{
|
{
|
||||||
char unit;
|
char unit;
|
||||||
int printed;
|
int printed;
|
||||||
|
@ -1258,6 +1269,13 @@ static int hists__browser_title(struct hists *hists, char *bf, size_t size)
|
||||||
if (dso)
|
if (dso)
|
||||||
printed += scnprintf(bf + printed, size - printed,
|
printed += scnprintf(bf + printed, size - printed,
|
||||||
", DSO: %s", dso->short_name);
|
", DSO: %s", dso->short_name);
|
||||||
|
if (!is_report_browser(hbt)) {
|
||||||
|
struct perf_top *top = hbt->arg;
|
||||||
|
|
||||||
|
if (top->zero)
|
||||||
|
printed += scnprintf(bf + printed, size - printed, " [z]");
|
||||||
|
}
|
||||||
|
|
||||||
return printed;
|
return printed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1269,12 +1287,6 @@ static inline void free_popup_options(char **options, int n)
|
||||||
zfree(&options[i]);
|
zfree(&options[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check whether the browser is for 'top' or 'report' */
|
|
||||||
static inline bool is_report_browser(void *timer)
|
|
||||||
{
|
|
||||||
return timer == NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Only runtime switching of perf data file will make "input_name" point
|
* Only runtime switching of perf data file will make "input_name" point
|
||||||
* to a malloced buffer. So add "is_input_name_malloced" flag to decide
|
* to a malloced buffer. So add "is_input_name_malloced" flag to decide
|
||||||
|
|
Loading…
Add table
Reference in a new issue