Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1291291 > unrolled thread
| Started by | Namhyung Kim <namhyung@kernel.org> |
|---|---|
| First post | 2015-12-14 16:50 +0100 |
| Last post | 2015-12-15 14:00 +0100 |
| Articles | 7 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys Namhyung Kim <namhyung@kernel.org> - 2015-12-14 16:50 +0100
Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys Jiri Olsa <jolsa@redhat.com> - 2015-12-15 10:10 +0100
Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-12-15 11:40 +0100
Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys Namhyung Kim <namhyung@kernel.org> - 2015-12-15 13:20 +0100
Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys Jiri Olsa <jolsa@redhat.com> - 2015-12-15 13:30 +0100
Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys Namhyung Kim <namhyung@kernel.org> - 2015-12-15 13:50 +0100
Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys Jiri Olsa <jolsa@redhat.com> - 2015-12-15 14:00 +0100
| From | Namhyung Kim <namhyung@kernel.org> |
|---|---|
| Date | 2015-12-14 16:50 +0100 |
| Subject | [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys |
| Message-ID | <qFDxU-83l-5@gated-at.bofh.it> |
Each tracepoint event has format string for print to improve
readability. Try to parse the output and match the field name. If it
finds one, use that for the result. If not, fallbacks to the original
output.
For example, sort on kmem:kmalloc.gfp_flags looks like below:
(Note: libtraceevent plugins are not installed on my system. They might
affect the output below)
Before:
# Overhead Command gfp_flags
# ........ ....... ..........
#
99.89% perf 32848
0.06% sleep 208
0.03% perf 32976
0.01% perf 208
After:
# Overhead Command gfp_flags
# ........ ....... ...................
#
99.89% perf GFP_NOFS|GFP_ZERO
0.06% sleep GFP_KERNEL
0.03% perf GFP_KERNEL|GFP_ZERO
0.01% perf GFP_KERNEL
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/sort.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++--
tools/perf/util/sort.h | 1 +
2 files changed, 74 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 8e4444514054..57945be4b81c 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1560,6 +1560,47 @@ static int hde_width(struct hpp_dynamic_entry *hde)
return hde->hpp.len;
}
+static void update_dynamic_len(struct hpp_dynamic_entry *hde,
+ struct hist_entry *he)
+{
+ char *str, *pos;
+ struct trace_seq seq;
+ struct format_field *field = hde->field;
+ struct pevent_record rec = {
+ .cpu = he->cpu,
+ .data = he->raw_data,
+ .size = he->raw_size,
+ };
+ size_t namelen;
+
+ if (he->dynlen_updated)
+ return;
+
+ /* parse pretty print result and update max length */
+ trace_seq_init(&seq);
+ pevent_event_info(&seq, field->event, &rec);
+
+ namelen = strlen(field->name);
+ str = strtok_r(seq.buffer, " ", &pos);
+ while (str) {
+ if (!strncmp(str, field->name, namelen)) {
+ size_t len;
+
+ str += namelen + 1;
+ len = strlen(str);
+
+ if (len > hde->dynamic_len)
+ hde->dynamic_len = len;
+ break;
+ }
+
+ str = strtok_r(NULL, " ", &pos);
+ }
+ trace_seq_destroy(&seq);
+
+ he->dynlen_updated = true;
+}
+
static int __sort__hde_header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
struct perf_evsel *evsel __maybe_unused)
{
@@ -1595,6 +1636,14 @@ static int __sort__hde_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
struct hpp_dynamic_entry *hde;
size_t len = fmt->user_len;
struct trace_seq seq;
+ char *str, *pos;
+ struct format_field *field;
+ struct pevent_record rec = {
+ .cpu = he->cpu,
+ .data = he->raw_data,
+ .size = he->raw_size,
+ };
+ size_t namelen;
int ret;
hde = container_of(fmt, struct hpp_dynamic_entry, hpp);
@@ -1605,9 +1654,28 @@ static int __sort__hde_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
if (hists_to_evsel(he->hists) != hde->evsel)
return scnprintf(hpp->buf, hpp->size, "%*.*s", len, len, "N/A");
+ field = hde->field;
trace_seq_init(&seq);
- print_event_field(&seq, he->raw_data, hde->field);
- ret = scnprintf(hpp->buf, hpp->size, "%*.*s", len, len, seq.buffer);
+ pevent_event_info(&seq, field->event, &rec);
+
+ namelen = strlen(field->name);
+ str = strtok_r(seq.buffer, " ", &pos);
+ while (str) {
+ if (!strncmp(str, field->name, namelen)) {
+ str += namelen + 1;
+ break;
+ }
+
+ str = strtok_r(NULL, " ", &pos);
+ }
+
+ if (str == NULL) {
+ trace_seq_reset(&seq);
+ print_event_field(&seq, he->raw_data, hde->field);
+ str = seq.buffer;
+ }
+
+ ret = scnprintf(hpp->buf, hpp->size, "%*.*s", len, len, str);
trace_seq_destroy(&seq);
return ret;
}
@@ -1638,6 +1706,9 @@ static int64_t __sort__hde_cmp(struct perf_hpp_fmt *fmt,
} else {
offset = field->offset;
size = field->size;
+
+ update_dynamic_len(hde, a);
+ update_dynamic_len(hde, b);
}
return memcmp(a->raw_data + offset, b->raw_data + offset, size);
diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h
index dd1c2973a836..aefcc2f8f173 100644
--- a/tools/perf/util/sort.h
+++ b/tools/perf/util/sort.h
@@ -97,6 +97,7 @@ struct hist_entry {
/* We are added by hists__add_dummy_entry. */
bool dummy;
+ bool dynlen_updated;
char level;
u8 filtered;
--
2.6.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2015-12-15 10:10 +0100 |
| Subject | Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys |
| Message-ID | <qFTMn-1YA-11@gated-at.bofh.it> |
| In reply to | #1291291 |
On Tue, Dec 15, 2015 at 12:46:13AM +0900, Namhyung Kim wrote: > Each tracepoint event has format string for print to improve > readability. Try to parse the output and match the field name. If it > finds one, use that for the result. If not, fallbacks to the original > output. > > For example, sort on kmem:kmalloc.gfp_flags looks like below: > (Note: libtraceevent plugins are not installed on my system. They might > affect the output below) > > Before: > # Overhead Command gfp_flags > # ........ ....... .......... > # > 99.89% perf 32848 > 0.06% sleep 208 > 0.03% perf 32976 > 0.01% perf 208 > > After: > # Overhead Command gfp_flags > # ........ ....... ................... > # > 99.89% perf GFP_NOFS|GFP_ZERO > 0.06% sleep GFP_KERNEL > 0.03% perf GFP_KERNEL|GFP_ZERO > 0.01% perf GFP_KERNEL hum, maybe we want some way to switch back to numbers? jirka -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Date | 2015-12-15 11:40 +0100 |
| Subject | Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys |
| Message-ID | <qFVbs-2PM-15@gated-at.bofh.it> |
| In reply to | #1291948 |
Em Tue, Dec 15, 2015 at 10:03:29AM +0100, Jiri Olsa escreveu: > On Tue, Dec 15, 2015 at 12:46:13AM +0900, Namhyung Kim wrote: > > Each tracepoint event has format string for print to improve > > readability. Try to parse the output and match the field name. If it > > finds one, use that for the result. If not, fallbacks to the original > > output. > > > > For example, sort on kmem:kmalloc.gfp_flags looks like below: > > (Note: libtraceevent plugins are not installed on my system. They might > > affect the output below) > > > > Before: > > # Overhead Command gfp_flags > > # ........ ....... .......... > > # > > 99.89% perf 32848 > > 0.06% sleep 208 > > 0.03% perf 32976 > > 0.01% perf 208 > > > > After: > > # Overhead Command gfp_flags > > # ........ ....... ................... > > # > > 99.89% perf GFP_NOFS|GFP_ZERO > > 0.06% sleep GFP_KERNEL > > 0.03% perf GFP_KERNEL|GFP_ZERO > > 0.01% perf GFP_KERNEL > > hum, maybe we want some way to switch back to numbers? Or remove repetitive stuff like GFP_? I guess this was done already for perf kmem? - Arnaldo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Namhyung Kim <namhyung@kernel.org> |
|---|---|
| Date | 2015-12-15 13:20 +0100 |
| Subject | Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys |
| Message-ID | <qFWKe-3YP-13@gated-at.bofh.it> |
| In reply to | #1292033 |
On Tue, Dec 15, 2015 at 07:36:37AM -0300, Arnaldo Carvalho de Melo wrote: > Em Tue, Dec 15, 2015 at 10:03:29AM +0100, Jiri Olsa escreveu: > > On Tue, Dec 15, 2015 at 12:46:13AM +0900, Namhyung Kim wrote: > > > Each tracepoint event has format string for print to improve > > > readability. Try to parse the output and match the field name. If it > > > finds one, use that for the result. If not, fallbacks to the original > > > output. > > > > > > For example, sort on kmem:kmalloc.gfp_flags looks like below: > > > (Note: libtraceevent plugins are not installed on my system. They might > > > affect the output below) > > > > > > Before: > > > # Overhead Command gfp_flags > > > # ........ ....... .......... > > > # > > > 99.89% perf 32848 > > > 0.06% sleep 208 > > > 0.03% perf 32976 > > > 0.01% perf 208 > > > > > > After: > > > # Overhead Command gfp_flags > > > # ........ ....... ................... > > > # > > > 99.89% perf GFP_NOFS|GFP_ZERO > > > 0.06% sleep GFP_KERNEL > > > 0.03% perf GFP_KERNEL|GFP_ZERO > > > 0.01% perf GFP_KERNEL > > > > hum, maybe we want some way to switch back to numbers? OK. Maybe something like 'kmem:kmalloc.gfp_flags/raw' ? > > Or remove repetitive stuff like GFP_? I guess this was done already for > perf kmem? Right, perf-kmem did that. But perf-report is more general and it's hard to handle every field this way. Also I think it might be better to keep the output as perf-script. Thanks, Namhyung -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2015-12-15 13:30 +0100 |
| Subject | Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys |
| Message-ID | <qFWTV-42L-29@gated-at.bofh.it> |
| In reply to | #1292098 |
On Tue, Dec 15, 2015 at 09:13:20PM +0900, Namhyung Kim wrote: > On Tue, Dec 15, 2015 at 07:36:37AM -0300, Arnaldo Carvalho de Melo wrote: > > Em Tue, Dec 15, 2015 at 10:03:29AM +0100, Jiri Olsa escreveu: > > > On Tue, Dec 15, 2015 at 12:46:13AM +0900, Namhyung Kim wrote: > > > > Each tracepoint event has format string for print to improve > > > > readability. Try to parse the output and match the field name. If it > > > > finds one, use that for the result. If not, fallbacks to the original > > > > output. > > > > > > > > For example, sort on kmem:kmalloc.gfp_flags looks like below: > > > > (Note: libtraceevent plugins are not installed on my system. They might > > > > affect the output below) > > > > > > > > Before: > > > > # Overhead Command gfp_flags > > > > # ........ ....... .......... > > > > # > > > > 99.89% perf 32848 > > > > 0.06% sleep 208 > > > > 0.03% perf 32976 > > > > 0.01% perf 208 > > > > > > > > After: > > > > # Overhead Command gfp_flags > > > > # ........ ....... ................... > > > > # > > > > 99.89% perf GFP_NOFS|GFP_ZERO > > > > 0.06% sleep GFP_KERNEL > > > > 0.03% perf GFP_KERNEL|GFP_ZERO > > > > 0.01% perf GFP_KERNEL > > > > > > hum, maybe we want some way to switch back to numbers? > > OK. Maybe something like 'kmem:kmalloc.gfp_flags/raw' ? ok.. and some option that would make it happen globaly ;-) jirka -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Namhyung Kim <namhyung@kernel.org> |
|---|---|
| Date | 2015-12-15 13:50 +0100 |
| Subject | Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys |
| Message-ID | <qFXdg-4aK-3@gated-at.bofh.it> |
| In reply to | #1292107 |
On Tue, Dec 15, 2015 at 01:24:26PM +0100, Jiri Olsa wrote: > On Tue, Dec 15, 2015 at 09:13:20PM +0900, Namhyung Kim wrote: > > On Tue, Dec 15, 2015 at 07:36:37AM -0300, Arnaldo Carvalho de Melo wrote: > > > Em Tue, Dec 15, 2015 at 10:03:29AM +0100, Jiri Olsa escreveu: > > > > On Tue, Dec 15, 2015 at 12:46:13AM +0900, Namhyung Kim wrote: > > > > > Each tracepoint event has format string for print to improve > > > > > readability. Try to parse the output and match the field name. If it > > > > > finds one, use that for the result. If not, fallbacks to the original > > > > > output. > > > > > > > > > > For example, sort on kmem:kmalloc.gfp_flags looks like below: > > > > > (Note: libtraceevent plugins are not installed on my system. They might > > > > > affect the output below) > > > > > > > > > > Before: > > > > > # Overhead Command gfp_flags > > > > > # ........ ....... .......... > > > > > # > > > > > 99.89% perf 32848 > > > > > 0.06% sleep 208 > > > > > 0.03% perf 32976 > > > > > 0.01% perf 208 > > > > > > > > > > After: > > > > > # Overhead Command gfp_flags > > > > > # ........ ....... ................... > > > > > # > > > > > 99.89% perf GFP_NOFS|GFP_ZERO > > > > > 0.06% sleep GFP_KERNEL > > > > > 0.03% perf GFP_KERNEL|GFP_ZERO > > > > > 0.01% perf GFP_KERNEL > > > > > > > > hum, maybe we want some way to switch back to numbers? > > > > OK. Maybe something like 'kmem:kmalloc.gfp_flags/raw' ? > > ok.. and some option that would make it happen globaly ;-) How about '--raw-trace' then? Thanks, Namhyung -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2015-12-15 14:00 +0100 |
| Subject | Re: [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys |
| Message-ID | <qFXmW-4ea-25@gated-at.bofh.it> |
| In reply to | #1292119 |
On Tue, Dec 15, 2015 at 09:42:31PM +0900, Namhyung Kim wrote: > On Tue, Dec 15, 2015 at 01:24:26PM +0100, Jiri Olsa wrote: > > On Tue, Dec 15, 2015 at 09:13:20PM +0900, Namhyung Kim wrote: > > > On Tue, Dec 15, 2015 at 07:36:37AM -0300, Arnaldo Carvalho de Melo wrote: > > > > Em Tue, Dec 15, 2015 at 10:03:29AM +0100, Jiri Olsa escreveu: > > > > > On Tue, Dec 15, 2015 at 12:46:13AM +0900, Namhyung Kim wrote: > > > > > > Each tracepoint event has format string for print to improve > > > > > > readability. Try to parse the output and match the field name. If it > > > > > > finds one, use that for the result. If not, fallbacks to the original > > > > > > output. > > > > > > > > > > > > For example, sort on kmem:kmalloc.gfp_flags looks like below: > > > > > > (Note: libtraceevent plugins are not installed on my system. They might > > > > > > affect the output below) > > > > > > > > > > > > Before: > > > > > > # Overhead Command gfp_flags > > > > > > # ........ ....... .......... > > > > > > # > > > > > > 99.89% perf 32848 > > > > > > 0.06% sleep 208 > > > > > > 0.03% perf 32976 > > > > > > 0.01% perf 208 > > > > > > > > > > > > After: > > > > > > # Overhead Command gfp_flags > > > > > > # ........ ....... ................... > > > > > > # > > > > > > 99.89% perf GFP_NOFS|GFP_ZERO > > > > > > 0.06% sleep GFP_KERNEL > > > > > > 0.03% perf GFP_KERNEL|GFP_ZERO > > > > > > 0.01% perf GFP_KERNEL > > > > > > > > > > hum, maybe we want some way to switch back to numbers? > > > > > > OK. Maybe something like 'kmem:kmalloc.gfp_flags/raw' ? > > > > ok.. and some option that would make it happen globaly ;-) > > How about '--raw-trace' then? sounds good to me thanks, jirka -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web