Messages in this thread Patch in this message | | | Date | Fri, 26 Feb 2016 11:15:33 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH 2/5] perf report: Show message for percent limit on stdio |
| |
Em Fri, Feb 26, 2016 at 09:13:17PM +0900, Namhyung Kim escreveu: > When the hierarchy mode is used, some entries might be omiited due to a > percent limit or filter. In this case the output hierarchy is different > than other entries. Add an informative message to users about this. > > For example, when 4% of percent limit is applied: > > Before: > # Overhead Command / Shared Object / Symbol > # .............. .......................................... > # > 49.09% swapper > 48.67% [kernel.vmlinux] > 34.42% [k] intel_idle > 11.51% firefox > 8.87% libpthread-2.22.so > 6.60% [.] __GI___libc_recvmsg > 10.49% gnome-shell > 4.74% libc-2.22.so > 10.08% Xorg > 6.11% libc-2.22.so > 5.27% [.] __memcpy_sse2_unaligned > 6.15% perf
That is great, and while testing it another idea came to me, what about telling how many entries are below the threshold (--percent-limit)?
Something like:
47.60% firefox 44.98% libxul.so 11.01% [.] 0x0000000001187918 10.84% [.] 0x0000000001187a5c 3.10% [.] 0x00000000011875c9 1.62% [.] 0x000000000118792b 1.47% [.] 0x00000000011875d8 1.39% [.] 0x0000000001187a6f 1.31% [.] 0x0000000001187a4a 1.27% [.] 0x0000000001187906 1.45% perf-9205.map no entry >= 1.00% 33.40% swapper 33.35% [kernel.vmlinux] 30.50% [k] intel_idle 25 entries < 1% 14.86% qemu-system-x86 7.58% [kvm] 2.40% [k] kvm_arch_vcpu_runnable 1.03% [k] kvm_vcpu_check_block 1 entry < 1%
Another: pressing enter over these 'no entry >= M%' and 'N entries < M%' would show those entries, for that specific point.
One more: Make '1.00%' appear as '1%' no need for .00, it adds no information and takes precious screen space.
Thanks! Applying this patch and looking at the others in this patchkit,
- Arnaldo > Note that, gnome-shell/libc has no symbols and perf has no dso/symbols. > With that patch the output will look like below: > > After: > > # Overhead Command / Shared Object / Symbol > # .............. .......................................... > # > 49.09% swapper > 48.67% [kernel.vmlinux] > 34.42% [k] intel_idle > 11.51% firefox > 8.87% libpthread-2.22.so > 6.60% [.] __GI___libc_recvmsg > 10.49% gnome-shell > 4.74% libc-2.22.so > no entry >= 4.00% > 10.08% Xorg > 6.11% libc-2.22.so > 5.27% [.] __memcpy_sse2_unaligned > 6.15% perf > no entry >= 4.00% > > Suggested-by: Arnaldo Carvalho de Melo <acme@kernel.org> > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > --- > tools/perf/ui/stdio/hist.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c > index 435eaaaf2f1d..b3bdfcb245f9 100644 > --- a/tools/perf/ui/stdio/hist.c > +++ b/tools/perf/ui/stdio/hist.c > @@ -628,6 +628,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows, > bool first = true; > size_t linesz; > char *line = NULL; > + unsigned indent; > > init_rem_hits(); > > @@ -704,6 +705,8 @@ print_entries: > goto out; > } > > + indent = hists__overhead_width(hists) + 4; > + > for (nd = rb_first(&hists->entries); nd; nd = __rb_hierarchy_next(nd, HMD_FORCE_CHILD)) { > struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node); > float percent; > @@ -720,6 +723,20 @@ print_entries: > if (max_rows && ++nr_rows >= max_rows) > break; > > + /* > + * If all children are filtered out or percent-limited, > + * display "no entry >= x.xx%" message. > + */ > + if (!h->leaf && !hist_entry__has_hierarchy_children(h, min_pcnt)) { > + int nr_sort = hists->hpp_list->nr_sort_keys; > + > + print_hierarchy_indent(sep, nr_sort + h->depth + 1, spaces, fp); > + fprintf(fp, "%*sno entry >= %.2f%%\n", indent, "", min_pcnt); > + > + if (max_rows && ++nr_rows >= max_rows) > + break; > + } > + > if (h->ms.map == NULL && verbose > 1) { > __map_groups__fprintf_maps(h->thread->mg, > MAP__FUNCTION, fp); > -- > 2.7.1
| |