Skip to content

Commit 2605af0

Browse files
Jin Yaoacmel
authored andcommitted
perf top: Support hotkey to change sort order
It would be nice if we can use a hotkey in perf top browser to select a event for sorting. For example: perf top --group -e cycles,instructions,cache-misses Samples Overhead Shared Object Symbol 40.03% 45.71% 0.03% div [.] main 20.46% 14.67% 0.21% libc-2.27.so [.] __random_r 20.01% 19.54% 0.02% libc-2.27.so [.] __random 9.68% 10.68% 0.00% div [.] compute_flag 4.32% 4.70% 0.00% libc-2.27.so [.] rand 3.84% 3.43% 0.00% div [.] rand@plt 0.05% 0.05% 2.33% libc-2.27.so [.] __strcmp_sse2_unaligned 0.04% 0.08% 2.43% perf [.] perf_hpp__is_dynamic_en 0.04% 0.02% 6.64% perf [.] rb_next 0.04% 0.01% 3.87% perf [.] dso__find_symbol 0.04% 0.04% 1.77% perf [.] sort__dso_cmp When user press hotkey '2' (event index, starting from 0), it indicates to sort output by the third event in group (cache-misses). Samples Overhead Shared Object Symbol 4.07% 1.28% 6.68% perf [.] rb_next 3.57% 3.98% 4.11% perf [.] __hists__insert_output 3.67% 11.24% 3.60% perf [.] perf_hpp__is_dynamic_e 3.67% 3.20% 3.20% perf [.] hpp__sort_overhead 0.81% 0.06% 3.01% perf [.] dso__find_symbol 1.62% 5.47% 2.51% perf [.] hists__match 2.70% 1.86% 2.47% libc-2.27.so [.] _int_malloc 0.19% 0.00% 2.29% [kernel] [k] copy_page 0.41% 0.32% 1.98% perf [.] hists__decay_entries 1.84% 3.67% 1.68% perf [.] sort__dso_cmp 0.16% 0.00% 1.63% [kernel] [k] clear_page_erms Now the output is sorted by cache-misses. v2: --- Zero the history if hotkey is pressed. Signed-off-by: Jin Yao <[email protected]> Suggested-by: Arnaldo Carvalho de Melo <[email protected]> Tested-by: Arnaldo Carvalho de Melo <[email protected]> Cc: Alexander Shishkin <[email protected]> Cc: Andi Kleen <[email protected]> Cc: Jin Yao <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Kan Liang <[email protected]> Cc: Peter Zijlstra <[email protected]> Link: http://lore.kernel.org/lkml/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
1 parent df7deb2 commit 2605af0

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

tools/perf/builtin-top.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,7 @@ static void *display_thread_tui(void *arg)
616616
.arg = top,
617617
.refresh = top->delay_secs,
618618
};
619+
int ret;
619620

620621
/* In order to read symbols from other namespaces perf to needs to call
621622
* setns(2). This isn't permitted if the struct_fs has multiple users.
@@ -626,6 +627,7 @@ static void *display_thread_tui(void *arg)
626627

627628
prctl(PR_SET_NAME, "perf-top-UI", 0, 0, 0);
628629

630+
repeat:
629631
perf_top__sort_new_samples(top);
630632

631633
/*
@@ -638,13 +640,18 @@ static void *display_thread_tui(void *arg)
638640
hists->uid_filter_str = top->record_opts.target.uid_str;
639641
}
640642

641-
perf_evlist__tui_browse_hists(top->evlist, help, &hbt,
643+
ret = perf_evlist__tui_browse_hists(top->evlist, help, &hbt,
642644
top->min_percent,
643645
&top->session->header.env,
644646
!top->record_opts.overwrite,
645647
&top->annotation_opts);
646648

647-
stop_top();
649+
if (ret == K_RELOAD) {
650+
top->zero = true;
651+
goto repeat;
652+
} else
653+
stop_top();
654+
648655
return NULL;
649656
}
650657

0 commit comments

Comments
 (0)