perf sort: Improve dso sort output by separating unresolved samples by type
PATCH 1/2 perf sort: Improve dso sort output by separating unresolved samples by type
We currently roll up all unresolved kernel, user, hypervisor and guest samples into the one bucket:
59.64% [unknown]
22.71% [kernel.kallsyms]
9.40% libj9jit26.so We can get a much better high level view by separating these unresolved samples by symbol type:
56.64% [unknown:.]
22.71% [kernel.kallsyms]
9.40% libj9jit26.so
2.81% [unknown:H] Signed-off-by Anton Blanchard <[email protected]>
---
tools/perf/util/sort.c +7 -1
@@ -111,6 +111,9 @@ sort__dso_cmp(struct hist_entry *left, sstruct dso *dso_r = right->ms.map ? right->ms.map->dso :NULL ;const char *dso_name_l, *dso_name_r; +if (!dso_l && !dso_r) +return right->level - left->level; +if (!dso_l || !dso_r)return cmp_null (dso_l, dso_r);
@@ -128,13 +131,16 @@ sort__dso_cmp(struct hist_entry *left, sstatic int hist_entry__dso_snprintf (struct hist_entry *self,char *bf,size_t size,unsigned int width) { +char unknown[] ="[unknown:.]" ; +if (self->ms.map && self->ms.map->dso) {const char *dso_name = !verbose ? self->ms.map->dso->short_name : self->ms.map->dso->long_name;return repsep_snprintf (bf, size,"%-*s" , width, dso_name); } -return repsep_snprintf (bf, size,"%-*s" , width,"[unknown]" ); + unknown[strlen (unknown) -2 ] = self->level; +return repsep_snprintf (bf, size,"%-*s" , width, unknown); }struct sort_entry sort_dso = {
Quoted 10 lines · Anton Blanchard
We currently roll up all unresolved kernel, user, hypervisor and guest samples into the one bucket:
59.64% [unknown] 22.71% [kernel.kallsyms] 9.40% libj9jit26.soWe can get a much better high level view by separating these unresolved samples by symbol type:
Quoted 6 lines
56.64% [unknown:.] 22.71% [kernel.kallsyms] 9.40% libj9jit26.so 2.81% [unknown:H]Signed-off-by Anton Blanchard <[email protected]>
Acked-by Eric B Munson <[email protected]>