* [GIT PULL 00/17] perf/core improvements and fixes @ 2016-05-06 0:29 Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 01/17] perf machine: Introduce number of threads member Arnaldo Carvalho de Melo ` (17 more replies) 0 siblings, 18 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Ananth N Mavinakayanahalli, Balbir Singh, David Ahern, Ian Munsie, Jiri Olsa, linuxppc-dev, Mark Wielaard, Masami Hiramatsu, Michael Ellerman, Milian Wolff, Namhyung Kim, Naveen N . Rao, Peter Zijlstra, pi3orama, Thiago Jung Bauermann, Wang Nan, Zefan Li, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit 1b6de5917172967acd8db4d222df4225d23a8a60: perf/x86/intel/pt: Convert ACCESS_ONCE()s (2016-05-05 10:16:29 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160505 for you to fetch changes up to b6b85dad30ad7e7394990e2317a780577974a4e6: perf evlist: Rename variable in perf_mmap__read() (2016-05-05 21:04:04 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: User visible: - Order output of 'perf trace --summary' better, now the threads will appear ascending order of number of events, and then, for each, in descending order of syscalls by the time spent in the syscalls, so that the last page produced can be the one about the most interesting thread straced, suggested by Milian Wolff (Arnaldo Carvalho de Melo) - Do not show the runtime_ms for a thread when not collecting it, that is done so far only with 'perf trace --sched' (Arnaldo Carvalho de Melo) - Fix kallsyms perf test on ppc64le (Naveen N. Rao) Infrastructure: - Move global variables related to presence of some keys in the sort order to a per hist struct, to allow code like the hists browser to work with multiple hists with different lists of columns (Jiri Olsa) - Add support for generating bpf prologue in powerpc (Naveen N. Rao) - Fix kprobe and kretprobe handling with kallsyms on ppc64le (Naveen N. Rao) - evlist mmap changes, prep work for supporting reading backwards (Wang Nan) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (5): perf machine: Introduce number of threads member perf tools: Add template for generating rbtree resort class perf trace: Sort summary output by number of events perf trace: Sort syscalls stats by msecs in --summary perf trace: Do not show the runtime_ms for a thread when not collecting it Jiri Olsa (7): perf hists: Move sort__need_collapse into struct perf_hpp_list perf hists: Move sort__has_parent into struct perf_hpp_list perf hists: Move sort__has_sym into struct perf_hpp_list perf hists: Move sort__has_dso into struct perf_hpp_list perf hists: Move sort__has_socket into struct perf_hpp_list perf hists: Move sort__has_thread into struct perf_hpp_list perf hists: Move sort__has_comm into struct perf_hpp_list Naveen N. Rao (3): perf tools powerpc: Add support for generating bpf prologue perf powerpc: Fix kprobe and kretprobe handling with kallsyms on ppc64le perf symbols: Fix kallsyms perf test on ppc64le Wang Nan (2): perf evlist: Extract perf_mmap__read() perf evlist: Rename variable in perf_mmap__read() tools/perf/arch/powerpc/Makefile | 1 + tools/perf/arch/powerpc/util/dwarf-regs.c | 40 +++++--- tools/perf/arch/powerpc/util/sym-handling.c | 43 ++++++-- tools/perf/builtin-diff.c | 4 +- tools/perf/builtin-report.c | 4 +- tools/perf/builtin-top.c | 8 +- tools/perf/builtin-trace.c | 87 ++++++++++------ tools/perf/tests/hists_common.c | 2 +- tools/perf/tests/hists_cumulate.c | 2 +- tools/perf/tests/hists_link.c | 4 +- tools/perf/tests/hists_output.c | 2 +- tools/perf/ui/browsers/hists.c | 32 +++--- tools/perf/ui/gtk/hists.c | 2 +- tools/perf/ui/hist.c | 2 +- tools/perf/util/annotate.c | 2 +- tools/perf/util/callchain.c | 2 +- tools/perf/util/evlist.c | 56 ++++++----- tools/perf/util/hist.c | 14 +-- tools/perf/util/hist.h | 10 ++ tools/perf/util/machine.c | 9 +- tools/perf/util/machine.h | 1 + tools/perf/util/probe-event.c | 5 +- tools/perf/util/probe-event.h | 3 +- tools/perf/util/rb_resort.h | 149 ++++++++++++++++++++++++++++ tools/perf/util/sort.c | 35 +++---- tools/perf/util/sort.h | 7 -- tools/perf/util/symbol-elf.c | 7 +- tools/perf/util/symbol.h | 3 +- 28 files changed, 382 insertions(+), 154 deletions(-) create mode 100644 tools/perf/util/rb_resort.h ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH 01/17] perf machine: Introduce number of threads member 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 02/17] perf tools: Add template for generating rbtree resort class Arnaldo Carvalho de Melo ` (16 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, David Ahern, Jiri Olsa, Milian Wolff, Namhyung Kim, Wang Nan From: Arnaldo Carvalho de Melo <acme@redhat.com> To be used, for instance, for pre-allocating an rb_tree array for sorting by other keys besides the current pid one. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Milian Wolff <milian.wolff@kdab.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-ja0ifkwue7ttjhbwijn6g6eu@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/machine.c | 7 ++++++- tools/perf/util/machine.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index 2cb95bbf9ea6..9d0913107dc7 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c @@ -32,6 +32,7 @@ int machine__init(struct machine *machine, const char *root_dir, pid_t pid) machine->threads = RB_ROOT; pthread_rwlock_init(&machine->threads_lock, NULL); + machine->nr_threads = 0; INIT_LIST_HEAD(&machine->dead_threads); machine->last_match = NULL; @@ -430,6 +431,7 @@ static struct thread *____machine__findnew_thread(struct machine *machine, */ thread__get(th); machine->last_match = th; + ++machine->nr_threads; } return th; @@ -681,11 +683,13 @@ size_t machine__fprintf_vmlinux_path(struct machine *machine, FILE *fp) size_t machine__fprintf(struct machine *machine, FILE *fp) { - size_t ret = 0; + size_t ret; struct rb_node *nd; pthread_rwlock_rdlock(&machine->threads_lock); + ret = fprintf(fp, "Threads: %u\n", machine->nr_threads); + for (nd = rb_first(&machine->threads); nd; nd = rb_next(nd)) { struct thread *pos = rb_entry(nd, struct thread, rb_node); @@ -1419,6 +1423,7 @@ static void __machine__remove_thread(struct machine *machine, struct thread *th, pthread_rwlock_wrlock(&machine->threads_lock); rb_erase_init(&th->rb_node, &machine->threads); RB_CLEAR_NODE(&th->rb_node); + --machine->nr_threads; /* * Move it first to the dead_threads list, then drop the reference, * if this is the last reference, then the thread__delete destructor diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h index 4822de5e4544..83f46790c52f 100644 --- a/tools/perf/util/machine.h +++ b/tools/perf/util/machine.h @@ -31,6 +31,7 @@ struct machine { char *root_dir; struct rb_root threads; pthread_rwlock_t threads_lock; + unsigned int nr_threads; struct list_head dead_threads; struct thread *last_match; struct vdso_info *vdso_info; -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 02/17] perf tools: Add template for generating rbtree resort class 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 01/17] perf machine: Introduce number of threads member Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 03/17] perf trace: Sort summary output by number of events Arnaldo Carvalho de Melo ` (15 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, David Ahern, Jiri Olsa, Milian Wolff, Namhyung Kim, Wang Nan From: Arnaldo Carvalho de Melo <acme@redhat.com> Sometimes we want to sort an existing rbtree by a different key, introduce a template for that, that needs only to be provided the rbtree root and the number of entries in it. To do that a new rbtree will be created with extra space for each entry, where possibly pre-calculated keys will be stored to be used in the resort process and also later, when using the newly sorted rbtree. Please check the following two changesets to see it in use for resorting stats for threads and its syscalls in 'perf trace --summary'. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Milian Wolff <milian.wolff@kdab.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-9l6e1q34lmf3wwdeewstyakg@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/rb_resort.h | 149 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 tools/perf/util/rb_resort.h diff --git a/tools/perf/util/rb_resort.h b/tools/perf/util/rb_resort.h new file mode 100644 index 000000000000..abc76e3d3098 --- /dev/null +++ b/tools/perf/util/rb_resort.h @@ -0,0 +1,149 @@ +#ifndef _PERF_RESORT_RB_H_ +#define _PERF_RESORT_RB_H_ +/* + * Template for creating a class to resort an existing rb_tree according to + * a new sort criteria, that must be present in the entries of the source + * rb_tree. + * + * (c) 2016 Arnaldo Carvalho de Melo <acme@redhat.com> + * + * Quick example, resorting threads by its shortname: + * + * First define the prefix (threads) to be used for the functions and data + * structures created, and provide an expression for the sorting, then the + * fields to be present in each of the entries in the new, sorted, rb_tree. + * + * The body of the init function should collect the fields, maybe + * pre-calculating them from multiple entries in the original 'entry' from + * the rb_tree used as a source for the entries to be sorted: + +DEFINE_RB_RESORT_RB(threads, strcmp(a->thread->shortname, + b->thread->shortname) < 0, + struct thread *thread; +) +{ + entry->thread = rb_entry(nd, struct thread, rb_node); +} + + * After this it is just a matter of instantiating it and iterating it, + * for a few data structures with existing rb_trees, such as 'struct machine', + * helpers are available to get the rb_root and the nr_entries: + + DECLARE_RESORT_RB_MACHINE_THREADS(threads, machine_ptr); + + * This will instantiate the new rb_tree and a cursor for it, that can be used as: + + struct rb_node *nd; + + resort_rb__for_each(nd, threads) { + struct thread *t = threads_entry; + printf("%s: %d\n", t->shortname, t->tid); + } + + * Then delete it: + + resort_rb__delete(threads); + + * The name of the data structures and functions will have a _sorted suffix + * right before the method names, i.e. will look like: + * + * struct threads_sorted_entry {} + * threads_sorted__insert() + */ + +#define DEFINE_RESORT_RB(__name, __comp, ...) \ +struct __name##_sorted_entry { \ + struct rb_node rb_node; \ + __VA_ARGS__ \ +}; \ +static void __name##_sorted__init_entry(struct rb_node *nd, \ + struct __name##_sorted_entry *entry); \ + \ +static int __name##_sorted__cmp(struct rb_node *nda, struct rb_node *ndb) \ +{ \ + struct __name##_sorted_entry *a, *b; \ + a = rb_entry(nda, struct __name##_sorted_entry, rb_node); \ + b = rb_entry(ndb, struct __name##_sorted_entry, rb_node); \ + return __comp; \ +} \ + \ +struct __name##_sorted { \ + struct rb_root entries; \ + struct __name##_sorted_entry nd[0]; \ +}; \ + \ +static void __name##_sorted__insert(struct __name##_sorted *sorted, \ + struct rb_node *sorted_nd) \ +{ \ + struct rb_node **p = &sorted->entries.rb_node, *parent = NULL; \ + while (*p != NULL) { \ + parent = *p; \ + if (__name##_sorted__cmp(sorted_nd, parent)) \ + p = &(*p)->rb_left; \ + else \ + p = &(*p)->rb_right; \ + } \ + rb_link_node(sorted_nd, parent, p); \ + rb_insert_color(sorted_nd, &sorted->entries); \ +} \ + \ +static void __name##_sorted__sort(struct __name##_sorted *sorted, \ + struct rb_root *entries) \ +{ \ + struct rb_node *nd; \ + unsigned int i = 0; \ + for (nd = rb_first(entries); nd; nd = rb_next(nd)) { \ + struct __name##_sorted_entry *snd = &sorted->nd[i++]; \ + __name##_sorted__init_entry(nd, snd); \ + __name##_sorted__insert(sorted, &snd->rb_node); \ + } \ +} \ + \ +static struct __name##_sorted *__name##_sorted__new(struct rb_root *entries, \ + int nr_entries) \ +{ \ + struct __name##_sorted *sorted; \ + sorted = malloc(sizeof(*sorted) + sizeof(sorted->nd[0]) * nr_entries); \ + if (sorted) { \ + sorted->entries = RB_ROOT; \ + __name##_sorted__sort(sorted, entries); \ + } \ + return sorted; \ +} \ + \ +static void __name##_sorted__delete(struct __name##_sorted *sorted) \ +{ \ + free(sorted); \ +} \ + \ +static void __name##_sorted__init_entry(struct rb_node *nd, \ + struct __name##_sorted_entry *entry) + +#define DECLARE_RESORT_RB(__name) \ +struct __name##_sorted_entry *__name##_entry; \ +struct __name##_sorted *__name = __name##_sorted__new + +#define resort_rb__for_each(__nd, __name) \ + for (__nd = rb_first(&__name->entries); \ + __name##_entry = rb_entry(__nd, struct __name##_sorted_entry, \ + rb_node), __nd; \ + __nd = rb_next(__nd)) + +#define resort_rb__delete(__name) \ + __name##_sorted__delete(__name), __name = NULL + +/* + * Helpers for other classes that contains both an rbtree and the + * number of entries in it: + */ + +/* For 'struct intlist' */ +#define DECLARE_RESORT_RB_INTLIST(__name, __ilist) \ + DECLARE_RESORT_RB(__name)(&__ilist->rblist.entries, \ + __ilist->rblist.nr_entries) + +/* For 'struct machine->threads' */ +#define DECLARE_RESORT_RB_MACHINE_THREADS(__name, __machine) \ + DECLARE_RESORT_RB(__name)(&__machine->threads, __machine->nr_threads) + +#endif /* _PERF_RESORT_RB_H_ */ -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 03/17] perf trace: Sort summary output by number of events 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 01/17] perf machine: Introduce number of threads member Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 02/17] perf tools: Add template for generating rbtree resort class Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 04/17] perf trace: Sort syscalls stats by msecs in --summary Arnaldo Carvalho de Melo ` (14 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan From: Arnaldo Carvalho de Melo <acme@redhat.com> # trace -a -s sleep 1 |& grep events | tail gmain (1733), 34 events, 1.0%, 0.000 msec hexchat (9765), 46 events, 1.4%, 0.000 msec ssh (11109), 80 events, 2.4%, 0.000 msec sleep (32631), 81 events, 2.4%, 0.000 msec qemu-system-x86 (10021), 272 events, 8.2%, 0.000 msec Xorg (1965), 322 events, 9.7%, 0.000 msec SoftwareVsyncTh (10922), 366 events, 11.1%, 0.000 msec gnome-shell (2231), 446 events, 13.5%, 0.000 msec qemu-system-x86 (9931), 468 events, 14.1%, 0.000 msec firefox (10871), 1098 events, 33.2%, 0.000 msec [root@jouet ~]# Suggested-by: Milian Wolff <milian.wolff@kdab.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-ye4cnprhfeiq32ar4lt60dqs@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-trace.c | 49 ++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 9e38fe973f0c..aac0074cc926 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -36,6 +36,7 @@ #include "util/bpf-loader.h" #include "callchain.h" #include "syscalltbl.h" +#include "rb_resort.h" #include <libaudit.h> /* FIXME: Still needed for audit_errno_to_name */ #include <stdlib.h> @@ -2829,19 +2830,9 @@ static size_t thread__dump_stats(struct thread_trace *ttrace, return printed; } -/* struct used to pass data to per-thread function */ -struct summary_data { - FILE *fp; - struct trace *trace; - size_t printed; -}; - -static int trace__fprintf_one_thread(struct thread *thread, void *priv) +static size_t trace__fprintf_thread(FILE *fp, struct thread *thread, struct trace *trace) { - struct summary_data *data = priv; - FILE *fp = data->fp; - size_t printed = data->printed; - struct trace *trace = data->trace; + size_t printed = 0; struct thread_trace *ttrace = thread__priv(thread); double ratio; @@ -2860,22 +2851,38 @@ static int trace__fprintf_one_thread(struct thread *thread, void *priv) printed += fprintf(fp, ", %.3f msec\n", ttrace->runtime_ms); printed += thread__dump_stats(ttrace, trace, fp); - data->printed += printed; + return printed; +} - return 0; +static unsigned long thread__nr_events(struct thread_trace *ttrace) +{ + return ttrace ? ttrace->nr_events : 0; +} + +DEFINE_RESORT_RB(threads, (thread__nr_events(a->thread->priv) < thread__nr_events(b->thread->priv)), + struct thread *thread; +) +{ + entry->thread = rb_entry(nd, struct thread, rb_node); } static size_t trace__fprintf_thread_summary(struct trace *trace, FILE *fp) { - struct summary_data data = { - .fp = fp, - .trace = trace - }; - data.printed = trace__fprintf_threads_header(fp); + DECLARE_RESORT_RB_MACHINE_THREADS(threads, trace->host); + size_t printed = trace__fprintf_threads_header(fp); + struct rb_node *nd; - machine__for_each_thread(trace->host, trace__fprintf_one_thread, &data); + if (threads == NULL) { + fprintf(fp, "%s", "Error sorting output by nr_events!\n"); + return 0; + } + + resort_rb__for_each(nd, threads) + printed += trace__fprintf_thread(fp, threads_entry->thread, trace); - return data.printed; + resort_rb__delete(threads); + + return printed; } static int trace__set_duration(const struct option *opt, const char *str, -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 04/17] perf trace: Sort syscalls stats by msecs in --summary 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (2 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 03/17] perf trace: Sort summary output by number of events Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 05/17] perf trace: Do not show the runtime_ms for a thread when not collecting it Arnaldo Carvalho de Melo ` (13 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan From: Arnaldo Carvalho de Melo <acme@redhat.com> # trace -a -s sleep 1 <SNIP> Xorg (1965), 788 events, 19.0%, 0.000 msec syscall calls total min avg max stddev (msec) (msec) (msec) (msec) (%) --------------- -------- --------- --------- --------- --------- ------ select 89 731.038 0.000 8.214 175.218 36.71% ioctl 22 0.661 0.010 0.030 0.072 10.43% writev 42 0.253 0.002 0.006 0.011 5.94% recvmsg 60 0.185 0.001 0.003 0.009 5.90% setitimer 60 0.127 0.001 0.002 0.006 6.14% read 52 0.102 0.001 0.002 0.005 8.55% rt_sigprocmask 45 0.092 0.001 0.002 0.023 23.65% poll 12 0.021 0.001 0.002 0.003 7.21% epoll_wait 12 0.019 0.001 0.002 0.002 2.71% firefox (10871), 1080 events, 26.1%, 0.000 msec syscall calls total min avg max stddev (msec) (msec) (msec) (msec) (%) --------------- -------- --------- --------- --------- --------- ------ poll 240 979.562 0.000 4.082 17.132 11.33% recvmsg 240 0.532 0.001 0.002 0.007 3.69% read 60 0.303 0.003 0.005 0.029 8.50% Suggested-by: Milian Wolff <milian.wolff@kdab.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-52kdkuyxihq0kvc0n2aalhay@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-trace.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index aac0074cc926..c61e61240b3b 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -2785,15 +2785,29 @@ static size_t trace__fprintf_threads_header(FILE *fp) return printed; } +DEFINE_RESORT_RB(syscall_stats, a->msecs > b->msecs, + struct stats *stats; + double msecs; + int syscall; +) +{ + struct int_node *source = rb_entry(nd, struct int_node, rb_node); + struct stats *stats = source->priv; + + entry->syscall = source->i; + entry->stats = stats; + entry->msecs = stats ? (u64)stats->n * (avg_stats(stats) / NSEC_PER_MSEC) : 0; +} + static size_t thread__dump_stats(struct thread_trace *ttrace, struct trace *trace, FILE *fp) { - struct stats *stats; size_t printed = 0; struct syscall *sc; - struct int_node *inode = intlist__first(ttrace->syscall_stats); + struct rb_node *nd; + DECLARE_RESORT_RB_INTLIST(syscall_stats, ttrace->syscall_stats); - if (inode == NULL) + if (syscall_stats == NULL) return 0; printed += fprintf(fp, "\n"); @@ -2802,9 +2816,8 @@ static size_t thread__dump_stats(struct thread_trace *ttrace, printed += fprintf(fp, " (msec) (msec) (msec) (msec) (%%)\n"); printed += fprintf(fp, " --------------- -------- --------- --------- --------- --------- ------\n"); - /* each int_node is a syscall */ - while (inode) { - stats = inode->priv; + resort_rb__for_each(nd, syscall_stats) { + struct stats *stats = syscall_stats_entry->stats; if (stats) { double min = (double)(stats->min) / NSEC_PER_MSEC; double max = (double)(stats->max) / NSEC_PER_MSEC; @@ -2815,16 +2828,15 @@ static size_t thread__dump_stats(struct thread_trace *ttrace, pct = avg ? 100.0 * stddev_stats(stats)/avg : 0.0; avg /= NSEC_PER_MSEC; - sc = &trace->syscalls.table[inode->i]; + sc = &trace->syscalls.table[syscall_stats_entry->syscall]; printed += fprintf(fp, " %-15s", sc->name); printed += fprintf(fp, " %8" PRIu64 " %9.3f %9.3f %9.3f", - n, avg * n, min, avg); + n, syscall_stats_entry->msecs, min, avg); printed += fprintf(fp, " %9.3f %9.2f%%\n", max, pct); } - - inode = intlist__next(inode); } + resort_rb__delete(syscall_stats); printed += fprintf(fp, "\n\n"); return printed; -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 05/17] perf trace: Do not show the runtime_ms for a thread when not collecting it 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (3 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 04/17] perf trace: Sort syscalls stats by msecs in --summary Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 06/17] perf tools powerpc: Add support for generating bpf prologue Arnaldo Carvalho de Melo ` (12 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, David Ahern, Jiri Olsa, Milian Wolff, Namhyung Kim, Wang Nan From: Arnaldo Carvalho de Melo <acme@redhat.com> That field is only updated when we use the "sched:sched_stat_runtime" tracepoint, and that is only done so far when we use the '--stat' command line option, without it we get just zeros, confusing the users: Without this patch: # trace -a -s sleep 1 <SNIP> qemu-system-x86 (9931), 468 events, 9.6%, 0.000 msec syscall calls total min avg max stddev (msec) (msec) (msec) (msec) (%) ---------- ------ --------- --------- --------- --------- ------ ppoll 98 982.374 0.000 10.024 29.983 12.65% write 34 0.401 0.005 0.012 0.027 5.49% ioctl 102 0.347 0.002 0.003 0.007 3.08% firefox (10871), 1856 events, 38.2%, 0.000 msec (msec) (msec) (msec) (msec) (%) ---------- ------ --------- --------- --------- --------- ------ poll 395 934.873 0.000 2.367 17.120 11.51% recvmsg 395 0.988 0.001 0.003 0.021 4.20% read 106 0.460 0.002 0.004 0.007 3.17% futex 24 0.108 0.001 0.004 0.010 10.05% mmap 2 0.041 0.016 0.021 0.026 23.92% write 6 0.027 0.004 0.004 0.005 2.52% After this patch that ', 0.000 msecs' gets suppressed when --stat is not in use. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Milian Wolff <milian.wolff@kdab.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-p7emqrsw7900tdkg43v9l1e1@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-trace.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index c61e61240b3b..66aa2a00414b 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -2860,7 +2860,11 @@ static size_t trace__fprintf_thread(FILE *fp, struct thread *thread, struct trac printed += fprintf(fp, ", %lu majfaults", ttrace->pfmaj); if (ttrace->pfmin) printed += fprintf(fp, ", %lu minfaults", ttrace->pfmin); - printed += fprintf(fp, ", %.3f msec\n", ttrace->runtime_ms); + if (trace->sched) + printed += fprintf(fp, ", %.3f msec\n", ttrace->runtime_ms); + else if (fputc('\n', fp) != EOF) + ++printed; + printed += thread__dump_stats(ttrace, trace, fp); return printed; -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 06/17] perf tools powerpc: Add support for generating bpf prologue 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (4 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 05/17] perf trace: Do not show the runtime_ms for a thread when not collecting it Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 07/17] perf hists: Move sort__need_collapse into struct perf_hpp_list Arnaldo Carvalho de Melo ` (11 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Naveen N. Rao, Ian Munsie, Masami Hiramatsu, Michael Ellerman, Wang Nan, linuxppc-dev, Arnaldo Carvalho de Melo From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> Generalize existing macros to serve the purpose. Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Cc: Ian Munsie <imunsie@au1.ibm.com> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Wang Nan <wangnan0@huawei.com> Cc: linuxppc-dev@lists.ozlabs.org Link: http://lkml.kernel.org/r/1462461799-17518-1-git-send-email-naveen.n.rao@linux.vnet.ibm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/arch/powerpc/Makefile | 1 + tools/perf/arch/powerpc/util/dwarf-regs.c | 40 +++++++++++++++++++++---------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/tools/perf/arch/powerpc/Makefile b/tools/perf/arch/powerpc/Makefile index 56e05f126ad8..cc3930904d68 100644 --- a/tools/perf/arch/powerpc/Makefile +++ b/tools/perf/arch/powerpc/Makefile @@ -3,4 +3,5 @@ PERF_HAVE_DWARF_REGS := 1 endif HAVE_KVM_STAT_SUPPORT := 1 +PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET := 1 PERF_HAVE_JITDUMP := 1 diff --git a/tools/perf/arch/powerpc/util/dwarf-regs.c b/tools/perf/arch/powerpc/util/dwarf-regs.c index 733151cdf46e..41bdf9530d82 100644 --- a/tools/perf/arch/powerpc/util/dwarf-regs.c +++ b/tools/perf/arch/powerpc/util/dwarf-regs.c @@ -10,19 +10,26 @@ */ #include <stddef.h> +#include <errno.h> +#include <string.h> #include <dwarf-regs.h> - +#include <linux/ptrace.h> +#include <linux/kernel.h> +#include "util.h" struct pt_regs_dwarfnum { const char *name; unsigned int dwarfnum; + unsigned int ptregs_offset; }; -#define STR(s) #s -#define REG_DWARFNUM_NAME(r, num) {.name = r, .dwarfnum = num} -#define GPR_DWARFNUM_NAME(num) \ - {.name = STR(%gpr##num), .dwarfnum = num} -#define REG_DWARFNUM_END {.name = NULL, .dwarfnum = 0} +#define REG_DWARFNUM_NAME(r, num) \ + {.name = STR(%)STR(r), .dwarfnum = num, \ + .ptregs_offset = offsetof(struct pt_regs, r)} +#define GPR_DWARFNUM_NAME(num) \ + {.name = STR(%gpr##num), .dwarfnum = num, \ + .ptregs_offset = offsetof(struct pt_regs, gpr[num])} +#define REG_DWARFNUM_END {.name = NULL, .dwarfnum = 0, .ptregs_offset = 0} /* * Reference: @@ -61,12 +68,12 @@ static const struct pt_regs_dwarfnum regdwarfnum_table[] = { GPR_DWARFNUM_NAME(29), GPR_DWARFNUM_NAME(30), GPR_DWARFNUM_NAME(31), - REG_DWARFNUM_NAME("%msr", 66), - REG_DWARFNUM_NAME("%ctr", 109), - REG_DWARFNUM_NAME("%link", 108), - REG_DWARFNUM_NAME("%xer", 101), - REG_DWARFNUM_NAME("%dar", 119), - REG_DWARFNUM_NAME("%dsisr", 118), + REG_DWARFNUM_NAME(msr, 66), + REG_DWARFNUM_NAME(ctr, 109), + REG_DWARFNUM_NAME(link, 108), + REG_DWARFNUM_NAME(xer, 101), + REG_DWARFNUM_NAME(dar, 119), + REG_DWARFNUM_NAME(dsisr, 118), REG_DWARFNUM_END, }; @@ -86,3 +93,12 @@ const char *get_arch_regstr(unsigned int n) return roff->name; return NULL; } + +int regs_query_register_offset(const char *name) +{ + const struct pt_regs_dwarfnum *roff; + for (roff = regdwarfnum_table; roff->name != NULL; roff++) + if (!strcmp(roff->name, name)) + return roff->ptregs_offset; + return -EINVAL; +} -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 07/17] perf hists: Move sort__need_collapse into struct perf_hpp_list 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (5 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 06/17] perf tools powerpc: Add support for generating bpf prologue Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 08/17] perf hists: Move sort__has_parent " Arnaldo Carvalho de Melo ` (10 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo From: Jiri Olsa <jolsa@kernel.org> Now we have sort dimensions private for struct hists, we need to make dimension booleans hists specific as well. Moving sort__need_collapse into struct perf_hpp_list. Adding hists__has macro to easily access this info perf struct hists object. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1462276488-26683-2-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-diff.c | 4 ++-- tools/perf/builtin-report.c | 2 +- tools/perf/builtin-top.c | 2 +- tools/perf/tests/hists_common.c | 2 +- tools/perf/tests/hists_cumulate.c | 2 +- tools/perf/tests/hists_link.c | 4 ++-- tools/perf/tests/hists_output.c | 2 +- tools/perf/util/hist.c | 14 +++++++------- tools/perf/util/hist.h | 4 ++++ tools/perf/util/sort.c | 5 ++--- tools/perf/util/sort.h | 1 - 11 files changed, 22 insertions(+), 20 deletions(-) diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c index 8053a8ceefda..9ce354f469dc 100644 --- a/tools/perf/builtin-diff.c +++ b/tools/perf/builtin-diff.c @@ -428,7 +428,7 @@ static void hists__baseline_only(struct hists *hists) struct rb_root *root; struct rb_node *next; - if (sort__need_collapse) + if (hists__has(hists, need_collapse)) root = &hists->entries_collapsed; else root = hists->entries_in; @@ -450,7 +450,7 @@ static void hists__precompute(struct hists *hists) struct rb_root *root; struct rb_node *next; - if (sort__need_collapse) + if (hists__has(hists, need_collapse)) root = &hists->entries_collapsed; else root = hists->entries_in; diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 8d9b88af901d..394d05ec0014 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -936,7 +936,7 @@ repeat: goto error; } - sort__need_collapse = true; + perf_hpp_list.need_collapse = true; } /* Force tty output for header output and per-thread stat. */ diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index da18517b1d40..ff6109839cdd 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -1255,7 +1255,7 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused) sort__mode = SORT_MODE__TOP; /* display thread wants entries to be collapsed in a different tree */ - sort__need_collapse = 1; + perf_hpp_list.need_collapse = 1; if (top.use_stdio) use_browser = 0; diff --git a/tools/perf/tests/hists_common.c b/tools/perf/tests/hists_common.c index f55f4bd47932..6b21746d6eec 100644 --- a/tools/perf/tests/hists_common.c +++ b/tools/perf/tests/hists_common.c @@ -161,7 +161,7 @@ void print_hists_in(struct hists *hists) struct rb_root *root; struct rb_node *node; - if (sort__need_collapse) + if (hists__has(hists, need_collapse)) root = &hists->entries_collapsed; else root = hists->entries_in; diff --git a/tools/perf/tests/hists_cumulate.c b/tools/perf/tests/hists_cumulate.c index 4a2bbff9b1ee..a9e3db3afac4 100644 --- a/tools/perf/tests/hists_cumulate.c +++ b/tools/perf/tests/hists_cumulate.c @@ -126,7 +126,7 @@ static void del_hist_entries(struct hists *hists) struct rb_root *root_out; struct rb_node *node; - if (sort__need_collapse) + if (hists__has(hists, need_collapse)) root_in = &hists->entries_collapsed; else root_in = hists->entries_in; diff --git a/tools/perf/tests/hists_link.c b/tools/perf/tests/hists_link.c index 358324e47805..acf5a1301c07 100644 --- a/tools/perf/tests/hists_link.c +++ b/tools/perf/tests/hists_link.c @@ -145,7 +145,7 @@ static int __validate_match(struct hists *hists) /* * Only entries from fake_common_samples should have a pair. */ - if (sort__need_collapse) + if (hists__has(hists, need_collapse)) root = &hists->entries_collapsed; else root = hists->entries_in; @@ -197,7 +197,7 @@ static int __validate_link(struct hists *hists, int idx) * and some entries will have no pair. However every entry * in other hists should have (dummy) pair. */ - if (sort__need_collapse) + if (hists__has(hists, need_collapse)) root = &hists->entries_collapsed; else root = hists->entries_in; diff --git a/tools/perf/tests/hists_output.c b/tools/perf/tests/hists_output.c index 7cd8738e842f..63c5efaba1b5 100644 --- a/tools/perf/tests/hists_output.c +++ b/tools/perf/tests/hists_output.c @@ -92,7 +92,7 @@ static void del_hist_entries(struct hists *hists) struct rb_root *root_out; struct rb_node *node; - if (sort__need_collapse) + if (hists__has(hists, need_collapse)) root_in = &hists->entries_collapsed; else root_in = hists->entries_in; diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c index 0f33d7e698c4..cfab531437c7 100644 --- a/tools/perf/util/hist.c +++ b/tools/perf/util/hist.c @@ -295,7 +295,7 @@ static void hists__delete_entry(struct hists *hists, struct hist_entry *he) root_in = &he->parent_he->hroot_in; root_out = &he->parent_he->hroot_out; } else { - if (sort__need_collapse) + if (hists__has(hists, need_collapse)) root_in = &hists->entries_collapsed; else root_in = hists->entries_in; @@ -1373,7 +1373,7 @@ int hists__collapse_resort(struct hists *hists, struct ui_progress *prog) struct hist_entry *n; int ret; - if (!sort__need_collapse) + if (!hists__has(hists, need_collapse)) return 0; hists->nr_entries = 0; @@ -1632,7 +1632,7 @@ static void output_resort(struct hists *hists, struct ui_progress *prog, return; } - if (sort__need_collapse) + if (hists__has(hists, need_collapse)) root = &hists->entries_collapsed; else root = hists->entries_in; @@ -2036,7 +2036,7 @@ static struct hist_entry *hists__add_dummy_entry(struct hists *hists, struct hist_entry *he; int64_t cmp; - if (sort__need_collapse) + if (hists__has(hists, need_collapse)) root = &hists->entries_collapsed; else root = hists->entries_in; @@ -2078,7 +2078,7 @@ static struct hist_entry *hists__find_entry(struct hists *hists, { struct rb_node *n; - if (sort__need_collapse) + if (hists__has(hists, need_collapse)) n = hists->entries_collapsed.rb_node; else n = hists->entries_in->rb_node; @@ -2107,7 +2107,7 @@ void hists__match(struct hists *leader, struct hists *other) struct rb_node *nd; struct hist_entry *pos, *pair; - if (sort__need_collapse) + if (hists__has(leader, need_collapse)) root = &leader->entries_collapsed; else root = leader->entries_in; @@ -2132,7 +2132,7 @@ int hists__link(struct hists *leader, struct hists *other) struct rb_node *nd; struct hist_entry *pos, *pair; - if (sort__need_collapse) + if (hists__has(other, need_collapse)) root = &other->entries_collapsed; else root = other->entries_in; diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h index 588596561cb3..ec76e6bef916 100644 --- a/tools/perf/util/hist.h +++ b/tools/perf/util/hist.h @@ -82,6 +82,8 @@ struct hists { int nr_hpp_node; }; +#define hists__has(__h, __f) (__h)->hpp_list->__f + struct hist_entry_iter; struct hist_iter_ops { @@ -238,6 +240,8 @@ struct perf_hpp_fmt { struct perf_hpp_list { struct list_head fields; struct list_head sorts; + + int need_collapse; }; extern struct perf_hpp_list perf_hpp_list; diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index 47966a1618c7..64ace548dc88 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -21,7 +21,6 @@ const char *sort_order; const char *field_order; regex_t ignore_callees_regex; int have_ignore_callees = 0; -int sort__need_collapse = 0; int sort__has_parent = 0; int sort__has_sym = 0; int sort__has_dso = 0; @@ -2163,7 +2162,7 @@ static int __sort_dimension__add(struct sort_dimension *sd, return -1; if (sd->entry->se_collapse) - sort__need_collapse = 1; + list->need_collapse = 1; sd->taken = 1; @@ -2746,7 +2745,7 @@ int setup_sorting(struct perf_evlist *evlist) void reset_output_field(void) { - sort__need_collapse = 0; + perf_hpp_list.need_collapse = 0; sort__has_parent = 0; sort__has_sym = 0; sort__has_dso = 0; diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h index 3f4e35998119..2e1d27326954 100644 --- a/tools/perf/util/sort.h +++ b/tools/perf/util/sort.h @@ -31,7 +31,6 @@ extern const char *parent_pattern; extern const char default_sort_order[]; extern regex_t ignore_callees_regex; extern int have_ignore_callees; -extern int sort__need_collapse; extern int sort__has_dso; extern int sort__has_parent; extern int sort__has_sym; -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 08/17] perf hists: Move sort__has_parent into struct perf_hpp_list 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (6 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 07/17] perf hists: Move sort__need_collapse into struct perf_hpp_list Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 09/17] perf hists: Move sort__has_sym " Arnaldo Carvalho de Melo ` (9 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo From: Jiri Olsa <jolsa@kernel.org> Now we have sort dimensions private for struct hists, we need to make dimension booleans hists specific as well. Moving sort__has_parent into struct perf_hpp_list. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1462276488-26683-3-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-report.c | 2 +- tools/perf/util/callchain.c | 2 +- tools/perf/util/hist.h | 1 + tools/perf/util/machine.c | 2 +- tools/perf/util/sort.c | 5 ++--- tools/perf/util/sort.h | 1 - 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 394d05ec0014..87d40e3c4078 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -234,7 +234,7 @@ static int report__setup_sample_type(struct report *rep) sample_type |= PERF_SAMPLE_BRANCH_STACK; if (!is_pipe && !(sample_type & PERF_SAMPLE_CALLCHAIN)) { - if (sort__has_parent) { + if (perf_hpp_list.parent) { ui__error("Selected --sort parent, but no " "callchain data. Did you call " "'perf record' without -g?\n"); diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c index aa248dcb4440..07fd30bc2f81 100644 --- a/tools/perf/util/callchain.c +++ b/tools/perf/util/callchain.c @@ -799,7 +799,7 @@ int sample__resolve_callchain(struct perf_sample *sample, return 0; if (symbol_conf.use_callchain || symbol_conf.cumulate_callchain || - sort__has_parent) { + perf_hpp_list.parent) { return thread__resolve_callchain(al->thread, cursor, evsel, sample, parent, al, max_stack); } diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h index ec76e6bef916..57b09791c339 100644 --- a/tools/perf/util/hist.h +++ b/tools/perf/util/hist.h @@ -242,6 +242,7 @@ struct perf_hpp_list { struct list_head sorts; int need_collapse; + int parent; }; extern struct perf_hpp_list perf_hpp_list; diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index 9d0913107dc7..8c7bf4dbd479 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c @@ -1652,7 +1652,7 @@ static int add_callchain_ip(struct thread *thread, } if (al.sym != NULL) { - if (sort__has_parent && !*parent && + if (perf_hpp_list.parent && !*parent && symbol__match_regex(al.sym, &parent_regex)) *parent = al.sym; else if (have_ignore_callees && root_al && diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index 64ace548dc88..75b33d387f50 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -21,7 +21,6 @@ const char *sort_order; const char *field_order; regex_t ignore_callees_regex; int have_ignore_callees = 0; -int sort__has_parent = 0; int sort__has_sym = 0; int sort__has_dso = 0; int sort__has_socket = 0; @@ -2244,7 +2243,7 @@ static int sort_dimension__add(struct perf_hpp_list *list, const char *tok, pr_err("Invalid regex: %s\n%s", parent_pattern, err); return -EINVAL; } - sort__has_parent = 1; + list->parent = 1; } else if (sd->entry == &sort_sym) { sort__has_sym = 1; /* @@ -2746,7 +2745,7 @@ int setup_sorting(struct perf_evlist *evlist) void reset_output_field(void) { perf_hpp_list.need_collapse = 0; - sort__has_parent = 0; + perf_hpp_list.parent = 0; sort__has_sym = 0; sort__has_dso = 0; diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h index 2e1d27326954..0e44aea86800 100644 --- a/tools/perf/util/sort.h +++ b/tools/perf/util/sort.h @@ -32,7 +32,6 @@ extern const char default_sort_order[]; extern regex_t ignore_callees_regex; extern int have_ignore_callees; extern int sort__has_dso; -extern int sort__has_parent; extern int sort__has_sym; extern int sort__has_socket; extern int sort__has_thread; -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 09/17] perf hists: Move sort__has_sym into struct perf_hpp_list 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (7 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 08/17] perf hists: Move sort__has_parent " Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 10/17] perf hists: Move sort__has_dso " Arnaldo Carvalho de Melo ` (8 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo From: Jiri Olsa <jolsa@kernel.org> Now we have sort dimensions private for struct hists, we need to make dimension booleans hists specific as well. Moving sort__has_sym into struct perf_hpp_list. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1462276488-26683-4-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-top.c | 4 ++-- tools/perf/ui/browsers/hists.c | 6 +++--- tools/perf/ui/gtk/hists.c | 2 +- tools/perf/ui/hist.c | 2 +- tools/perf/util/annotate.c | 2 +- tools/perf/util/hist.h | 1 + tools/perf/util/sort.c | 9 ++++----- tools/perf/util/sort.h | 1 - 8 files changed, 13 insertions(+), 14 deletions(-) diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index ff6109839cdd..39fe06fc19d3 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -688,7 +688,7 @@ static int hist_iter__top_callback(struct hist_entry_iter *iter, struct hist_entry *he = iter->he; struct perf_evsel *evsel = iter->evsel; - if (sort__has_sym && single) + if (perf_hpp_list.sym && single) perf_top__record_precise_ip(top, he, evsel->idx, al->addr); hist__account_cycles(iter->sample->branch_stack, al, iter->sample, @@ -919,7 +919,7 @@ out_err: static int callchain_param__setup_sample_type(struct callchain_param *callchain) { - if (!sort__has_sym) { + if (!perf_hpp_list.sym) { if (callchain->enabled) { ui__error("Selected -g but \"sym\" not present in --sort/-s."); return -EINVAL; diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index 6a4681932ba5..b66bf83ed883 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -2747,7 +2747,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, */ goto out_free_stack; case 'a': - if (!sort__has_sym) { + if (!hists__has(hists, sym)) { ui_browser__warning(&browser->b, delay_secs * 2, "Annotation is only available for symbolic views, " "include \"sym*\" in --sort to use it."); @@ -2910,7 +2910,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, continue; } - if (!sort__has_sym || browser->selection == NULL) + if (!hists__has(hists, sym) || browser->selection == NULL) goto skip_annotation; if (sort__mode == SORT_MODE__BRANCH) { @@ -2969,7 +2969,7 @@ skip_annotation: * * See hist_browser__show_entry. */ - if (sort__has_sym && browser->selection->sym) { + if (hists__has(hists, sym) && browser->selection->sym) { nr_options += add_script_opt(browser, &actions[nr_options], &options[nr_options], diff --git a/tools/perf/ui/gtk/hists.c b/tools/perf/ui/gtk/hists.c index 2aa45b606fa4..932adfaa05af 100644 --- a/tools/perf/ui/gtk/hists.c +++ b/tools/perf/ui/gtk/hists.c @@ -379,7 +379,7 @@ static void perf_gtk__show_hists(GtkWidget *window, struct hists *hists, gtk_tree_store_set(store, &iter, col_idx++, s, -1); } - if (symbol_conf.use_callchain && sort__has_sym) { + if (symbol_conf.use_callchain && hists__has(hists, sym)) { if (callchain_param.mode == CHAIN_GRAPH_REL) total = symbol_conf.cumulate_callchain ? h->stat_acc->period : h->stat.period; diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c index 3baeaa6e71b5..af07ffb129ca 100644 --- a/tools/perf/ui/hist.c +++ b/tools/perf/ui/hist.c @@ -635,7 +635,7 @@ unsigned int hists__sort_list_width(struct hists *hists) ret += fmt->width(fmt, &dummy_hpp, hists_to_evsel(hists)); } - if (verbose && sort__has_sym) /* Addr + origin */ + if (verbose && hists__has(hists, sym)) /* Addr + origin */ ret += 3 + BITS_PER_LONG / 4; return ret; diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index b795b6994144..d4b3d034c503 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -1665,5 +1665,5 @@ int hist_entry__annotate(struct hist_entry *he, size_t privsize) bool ui__has_annotation(void) { - return use_browser == 1 && sort__has_sym; + return use_browser == 1 && perf_hpp_list.sym; } diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h index 57b09791c339..c3a77502e22b 100644 --- a/tools/perf/util/hist.h +++ b/tools/perf/util/hist.h @@ -243,6 +243,7 @@ struct perf_hpp_list { int need_collapse; int parent; + int sym; }; extern struct perf_hpp_list perf_hpp_list; diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index 75b33d387f50..544ab376ac42 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -21,7 +21,6 @@ const char *sort_order; const char *field_order; regex_t ignore_callees_regex; int have_ignore_callees = 0; -int sort__has_sym = 0; int sort__has_dso = 0; int sort__has_socket = 0; int sort__has_thread = 0; @@ -2245,7 +2244,7 @@ static int sort_dimension__add(struct perf_hpp_list *list, const char *tok, } list->parent = 1; } else if (sd->entry == &sort_sym) { - sort__has_sym = 1; + list->sym = 1; /* * perf diff displays the performance difference amongst * two or more perf.data files. Those files could come @@ -2287,7 +2286,7 @@ static int sort_dimension__add(struct perf_hpp_list *list, const char *tok, return -EINVAL; if (sd->entry == &sort_sym_from || sd->entry == &sort_sym_to) - sort__has_sym = 1; + list->sym = 1; __sort_dimension__add(sd, list, level); return 0; @@ -2303,7 +2302,7 @@ static int sort_dimension__add(struct perf_hpp_list *list, const char *tok, return -EINVAL; if (sd->entry == &sort_mem_daddr_sym) - sort__has_sym = 1; + list->sym = 1; __sort_dimension__add(sd, list, level); return 0; @@ -2746,7 +2745,7 @@ void reset_output_field(void) { perf_hpp_list.need_collapse = 0; perf_hpp_list.parent = 0; - sort__has_sym = 0; + perf_hpp_list.sym = 0; sort__has_dso = 0; field_order = NULL; diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h index 0e44aea86800..9a5e7d4a2cac 100644 --- a/tools/perf/util/sort.h +++ b/tools/perf/util/sort.h @@ -32,7 +32,6 @@ extern const char default_sort_order[]; extern regex_t ignore_callees_regex; extern int have_ignore_callees; extern int sort__has_dso; -extern int sort__has_sym; extern int sort__has_socket; extern int sort__has_thread; extern int sort__has_comm; -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 10/17] perf hists: Move sort__has_dso into struct perf_hpp_list 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (8 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 09/17] perf hists: Move sort__has_sym " Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 11/17] perf hists: Move sort__has_socket " Arnaldo Carvalho de Melo ` (7 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo From: Jiri Olsa <jolsa@kernel.org> Now we have sort dimensions private for struct hists, we need to make dimension booleans hists specific as well. Moving sort__has_dso into struct perf_hpp_list. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1462276488-26683-5-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/ui/browsers/hists.c | 8 ++++---- tools/perf/util/hist.h | 1 + tools/perf/util/sort.c | 7 +++---- tools/perf/util/sort.h | 1 - 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index b66bf83ed883..6b2f95300e35 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -2380,7 +2380,7 @@ do_zoom_dso(struct hist_browser *browser, struct popup_action *act) { struct map *map = act->ms.map; - if (!sort__has_dso || map == NULL) + if (!hists__has(browser->hists, dso) || map == NULL) return 0; if (browser->hists->dso_filter) { @@ -2407,7 +2407,7 @@ static int add_dso_opt(struct hist_browser *browser, struct popup_action *act, char **optstr, struct map *map) { - if (!sort__has_dso || map == NULL) + if (!hists__has(browser->hists, dso) || map == NULL) return 0; if (asprintf(optstr, "Zoom %s %s DSO", @@ -2429,10 +2429,10 @@ do_browse_map(struct hist_browser *browser __maybe_unused, } static int -add_map_opt(struct hist_browser *browser __maybe_unused, +add_map_opt(struct hist_browser *browser, struct popup_action *act, char **optstr, struct map *map) { - if (!sort__has_dso || map == NULL) + if (!hists__has(browser->hists, dso) || map == NULL) return 0; if (asprintf(optstr, "Browse map details") < 0) diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h index c3a77502e22b..4302f34f36ae 100644 --- a/tools/perf/util/hist.h +++ b/tools/perf/util/hist.h @@ -244,6 +244,7 @@ struct perf_hpp_list { int need_collapse; int parent; int sym; + int dso; }; extern struct perf_hpp_list perf_hpp_list; diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index 544ab376ac42..2446c39b5fa6 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -21,7 +21,6 @@ const char *sort_order; const char *field_order; regex_t ignore_callees_regex; int have_ignore_callees = 0; -int sort__has_dso = 0; int sort__has_socket = 0; int sort__has_thread = 0; int sort__has_comm = 0; @@ -241,7 +240,7 @@ sort__sym_cmp(struct hist_entry *left, struct hist_entry *right) * comparing symbol address alone is not enough since it's a * relative address within a dso. */ - if (!sort__has_dso) { + if (!hists__has(left->hists, dso) || hists__has(right->hists, dso)) { ret = sort__dso_cmp(left, right); if (ret != 0) return ret; @@ -2255,7 +2254,7 @@ static int sort_dimension__add(struct perf_hpp_list *list, const char *tok, sd->entry->se_collapse = sort__sym_sort; } else if (sd->entry == &sort_dso) { - sort__has_dso = 1; + list->dso = 1; } else if (sd->entry == &sort_socket) { sort__has_socket = 1; } else if (sd->entry == &sort_thread) { @@ -2746,7 +2745,7 @@ void reset_output_field(void) perf_hpp_list.need_collapse = 0; perf_hpp_list.parent = 0; perf_hpp_list.sym = 0; - sort__has_dso = 0; + perf_hpp_list.dso = 0; field_order = NULL; sort_order = NULL; diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h index 9a5e7d4a2cac..87d4addf92b5 100644 --- a/tools/perf/util/sort.h +++ b/tools/perf/util/sort.h @@ -31,7 +31,6 @@ extern const char *parent_pattern; extern const char default_sort_order[]; extern regex_t ignore_callees_regex; extern int have_ignore_callees; -extern int sort__has_dso; extern int sort__has_socket; extern int sort__has_thread; extern int sort__has_comm; -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 11/17] perf hists: Move sort__has_socket into struct perf_hpp_list 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (9 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 10/17] perf hists: Move sort__has_dso " Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 12/17] perf hists: Move sort__has_thread " Arnaldo Carvalho de Melo ` (6 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo From: Jiri Olsa <jolsa@kernel.org> Now we have sort dimensions private for struct hists, we need to make dimension booleans hists specific as well. Moving sort__has_socket into struct perf_hpp_list. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1462276488-26683-6-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-top.c | 2 +- tools/perf/ui/browsers/hists.c | 4 ++-- tools/perf/util/hist.h | 1 + tools/perf/util/sort.c | 3 +-- tools/perf/util/sort.h | 1 - 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index 39fe06fc19d3..1793da585676 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -962,7 +962,7 @@ static int __cmd_top(struct perf_top *top) machine__synthesize_threads(&top->session->machines.host, &opts->target, top->evlist->threads, false, opts->proc_map_timeout); - if (sort__has_socket) { + if (perf_hpp_list.socket) { ret = perf_env__read_cpu_topology_map(&perf_env); if (ret < 0) goto out_err_cpu_topo; diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index 6b2f95300e35..b25bf82c121f 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -2534,7 +2534,7 @@ add_exit_opt(struct hist_browser *browser __maybe_unused, static int do_zoom_socket(struct hist_browser *browser, struct popup_action *act) { - if (!sort__has_socket || act->socket < 0) + if (!hists__has(browser->hists, socket) || act->socket < 0) return 0; if (browser->hists->socket_filter > -1) { @@ -2556,7 +2556,7 @@ static int add_socket_opt(struct hist_browser *browser, struct popup_action *act, char **optstr, int socket_id) { - if (!sort__has_socket || socket_id < 0) + if (!hists__has(browser->hists, socket) || socket_id < 0) return 0; if (asprintf(optstr, "Zoom %s Processor Socket %d", diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h index 4302f34f36ae..66f313936faf 100644 --- a/tools/perf/util/hist.h +++ b/tools/perf/util/hist.h @@ -245,6 +245,7 @@ struct perf_hpp_list { int parent; int sym; int dso; + int socket; }; extern struct perf_hpp_list perf_hpp_list; diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index 2446c39b5fa6..712a71ad76a6 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -21,7 +21,6 @@ const char *sort_order; const char *field_order; regex_t ignore_callees_regex; int have_ignore_callees = 0; -int sort__has_socket = 0; int sort__has_thread = 0; int sort__has_comm = 0; enum sort_mode sort__mode = SORT_MODE__NORMAL; @@ -2256,7 +2255,7 @@ static int sort_dimension__add(struct perf_hpp_list *list, const char *tok, } else if (sd->entry == &sort_dso) { list->dso = 1; } else if (sd->entry == &sort_socket) { - sort__has_socket = 1; + list->socket = 1; } else if (sd->entry == &sort_thread) { sort__has_thread = 1; } else if (sd->entry == &sort_comm) { diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h index 87d4addf92b5..85424a608074 100644 --- a/tools/perf/util/sort.h +++ b/tools/perf/util/sort.h @@ -31,7 +31,6 @@ extern const char *parent_pattern; extern const char default_sort_order[]; extern regex_t ignore_callees_regex; extern int have_ignore_callees; -extern int sort__has_socket; extern int sort__has_thread; extern int sort__has_comm; extern enum sort_mode sort__mode; -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 12/17] perf hists: Move sort__has_thread into struct perf_hpp_list 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (10 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 11/17] perf hists: Move sort__has_socket " Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 13/17] perf hists: Move sort__has_comm " Arnaldo Carvalho de Melo ` (5 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo From: Jiri Olsa <jolsa@kernel.org> Now we have sort dimensions private for struct hists, we need to make dimension booleans hists specific as well. Moving sort__has_thread into struct perf_hpp_list. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1462276488-26683-7-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/ui/browsers/hists.c | 12 ++++++------ tools/perf/util/hist.h | 1 + tools/perf/util/sort.c | 3 +-- tools/perf/util/sort.h | 1 - 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index b25bf82c121f..dda5b4322945 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -2135,7 +2135,7 @@ static int hists__browser_title(struct hists *hists, printed += snprintf(bf + printed, size - printed, ", UID: %s", hists->uid_filter_str); if (thread) { - if (sort__has_thread) { + if (hists__has(hists, thread)) { printed += scnprintf(bf + printed, size - printed, ", Thread: %s(%d)", (thread->comm_set ? thread__comm_str(thread) : ""), @@ -2320,7 +2320,7 @@ do_zoom_thread(struct hist_browser *browser, struct popup_action *act) { struct thread *thread = act->thread; - if ((!sort__has_thread && !sort__has_comm) || thread == NULL) + if ((!hists__has(browser->hists, thread) && !sort__has_comm) || thread == NULL) return 0; if (browser->hists->thread_filter) { @@ -2329,7 +2329,7 @@ do_zoom_thread(struct hist_browser *browser, struct popup_action *act) thread__zput(browser->hists->thread_filter); ui_helpline__pop(); } else { - if (sort__has_thread) { + if (hists__has(browser->hists, thread)) { ui_helpline__fpush("To zoom out press ESC or ENTER + \"Zoom out of %s(%d) thread\"", thread->comm_set ? thread__comm_str(thread) : "", thread->tid); @@ -2354,10 +2354,10 @@ add_thread_opt(struct hist_browser *browser, struct popup_action *act, { int ret; - if ((!sort__has_thread && !sort__has_comm) || thread == NULL) + if ((!hists__has(browser->hists, thread) && !sort__has_comm) || thread == NULL) return 0; - if (sort__has_thread) { + if (hists__has(browser->hists, thread)) { ret = asprintf(optstr, "Zoom %s %s(%d) thread", browser->hists->thread_filter ? "out of" : "into", thread->comm_set ? thread__comm_str(thread) : "", @@ -2954,7 +2954,7 @@ skip_annotation: goto skip_scripting; if (browser->he_selection) { - if (sort__has_thread && thread) { + if (hists__has(hists, thread) && thread) { nr_options += add_script_opt(browser, &actions[nr_options], &options[nr_options], diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h index 66f313936faf..adeb4049c488 100644 --- a/tools/perf/util/hist.h +++ b/tools/perf/util/hist.h @@ -246,6 +246,7 @@ struct perf_hpp_list { int sym; int dso; int socket; + int thread; }; extern struct perf_hpp_list perf_hpp_list; diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index 712a71ad76a6..000d6e901841 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -21,7 +21,6 @@ const char *sort_order; const char *field_order; regex_t ignore_callees_regex; int have_ignore_callees = 0; -int sort__has_thread = 0; int sort__has_comm = 0; enum sort_mode sort__mode = SORT_MODE__NORMAL; @@ -2257,7 +2256,7 @@ static int sort_dimension__add(struct perf_hpp_list *list, const char *tok, } else if (sd->entry == &sort_socket) { list->socket = 1; } else if (sd->entry == &sort_thread) { - sort__has_thread = 1; + list->thread = 1; } else if (sd->entry == &sort_comm) { sort__has_comm = 1; } diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h index 85424a608074..e8d1bf147522 100644 --- a/tools/perf/util/sort.h +++ b/tools/perf/util/sort.h @@ -31,7 +31,6 @@ extern const char *parent_pattern; extern const char default_sort_order[]; extern regex_t ignore_callees_regex; extern int have_ignore_callees; -extern int sort__has_thread; extern int sort__has_comm; extern enum sort_mode sort__mode; extern struct sort_entry sort_comm; -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 13/17] perf hists: Move sort__has_comm into struct perf_hpp_list 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (11 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 12/17] perf hists: Move sort__has_thread " Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 14/17] perf powerpc: Fix kprobe and kretprobe handling with kallsyms on ppc64le Arnaldo Carvalho de Melo ` (4 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo From: Jiri Olsa <jolsa@kernel.org> Now we have sort dimensions private for struct hists, we need to make dimension booleans hists specific as well. Moving sort__has_comm into struct perf_hpp_list. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1462276488-26683-8-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/ui/browsers/hists.c | 6 ++++-- tools/perf/util/hist.h | 1 + tools/perf/util/sort.c | 3 +-- tools/perf/util/sort.h | 1 - 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index dda5b4322945..538bae880bfe 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -2320,7 +2320,8 @@ do_zoom_thread(struct hist_browser *browser, struct popup_action *act) { struct thread *thread = act->thread; - if ((!hists__has(browser->hists, thread) && !sort__has_comm) || thread == NULL) + if ((!hists__has(browser->hists, thread) && + !hists__has(browser->hists, comm)) || thread == NULL) return 0; if (browser->hists->thread_filter) { @@ -2354,7 +2355,8 @@ add_thread_opt(struct hist_browser *browser, struct popup_action *act, { int ret; - if ((!hists__has(browser->hists, thread) && !sort__has_comm) || thread == NULL) + if ((!hists__has(browser->hists, thread) && + !hists__has(browser->hists, comm)) || thread == NULL) return 0; if (hists__has(browser->hists, thread)) { diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h index adeb4049c488..0f84bfb42bb1 100644 --- a/tools/perf/util/hist.h +++ b/tools/perf/util/hist.h @@ -247,6 +247,7 @@ struct perf_hpp_list { int dso; int socket; int thread; + int comm; }; extern struct perf_hpp_list perf_hpp_list; diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index 000d6e901841..772e2e461ec3 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -21,7 +21,6 @@ const char *sort_order; const char *field_order; regex_t ignore_callees_regex; int have_ignore_callees = 0; -int sort__has_comm = 0; enum sort_mode sort__mode = SORT_MODE__NORMAL; /* @@ -2258,7 +2257,7 @@ static int sort_dimension__add(struct perf_hpp_list *list, const char *tok, } else if (sd->entry == &sort_thread) { list->thread = 1; } else if (sd->entry == &sort_comm) { - sort__has_comm = 1; + list->comm = 1; } return __sort_dimension__add(sd, list, level); diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h index e8d1bf147522..42927f448bcb 100644 --- a/tools/perf/util/sort.h +++ b/tools/perf/util/sort.h @@ -31,7 +31,6 @@ extern const char *parent_pattern; extern const char default_sort_order[]; extern regex_t ignore_callees_regex; extern int have_ignore_callees; -extern int sort__has_comm; extern enum sort_mode sort__mode; extern struct sort_entry sort_comm; extern struct sort_entry sort_dso; -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 14/17] perf powerpc: Fix kprobe and kretprobe handling with kallsyms on ppc64le 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (12 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 13/17] perf hists: Move sort__has_comm " Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 15/17] perf symbols: Fix kallsyms perf test " Arnaldo Carvalho de Melo ` (3 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Naveen N. Rao, Mark Wielaard, Masami Hiramatsu, Michael Ellerman, Thiago Jung Bauermann, linuxppc-dev, Arnaldo Carvalho de Melo From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> So far, we used to treat probe point offsets as being offset from the LEP. However, userspace applications (objdump/readelf) always show disassembly and offsets from the function GEP. This is confusing to the user as we will end up probing at an address different from what the user expects when looking at the function disassembly with readelf/objdump. Fix this by changing how we modify probe address with perf. If only the function name is provided, we assume the user needs the LEP. Otherwise, if an offset is specified, we assume that the user knows the exact address to probe based on function disassembly, and so we just place the probe from the GEP offset. Finally, kretprobe was also broken with kallsyms as we were trying to specify an offset. This patch also fixes that issue. Reported-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Acked-by: Balbir Singh <bsingharora@gmail.com> Cc: Mark Wielaard <mjw@redhat.com> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com> Cc: linuxppc-dev@lists.ozlabs.org Link: http://lkml.kernel.org/r/75df860aad8216bf4b9bcd10c6351ecc0e3dee54.1460451721.git.naveen.n.rao@linux.vnet.ibm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/arch/powerpc/util/sym-handling.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tools/perf/arch/powerpc/util/sym-handling.c b/tools/perf/arch/powerpc/util/sym-handling.c index bbc1a50768dd..6974ba0fa065 100644 --- a/tools/perf/arch/powerpc/util/sym-handling.c +++ b/tools/perf/arch/powerpc/util/sym-handling.c @@ -71,12 +71,21 @@ void arch__fix_tev_from_maps(struct perf_probe_event *pev, struct probe_trace_event *tev, struct map *map) { /* - * ppc64 ABIv2 local entry point is currently always 2 instructions - * (8 bytes) after the global entry point. + * When probing at a function entry point, we normally always want the + * LEP since that catches calls to the function through both the GEP and + * the LEP. Hence, we would like to probe at an offset of 8 bytes if + * the user only specified the function entry. + * + * However, if the user specifies an offset, we fall back to using the + * GEP since all userspace applications (objdump/readelf) show function + * disassembly with offsets from the GEP. + * + * In addition, we shouldn't specify an offset for kretprobes. */ - if (!pev->uprobes && map->dso->symtab_type == DSO_BINARY_TYPE__KALLSYMS) { - tev->point.address += PPC64LE_LEP_OFFSET; + if (pev->point.offset || pev->point.retprobe || !map) + return; + + if (map->dso->symtab_type == DSO_BINARY_TYPE__KALLSYMS) tev->point.offset += PPC64LE_LEP_OFFSET; - } } #endif -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 15/17] perf symbols: Fix kallsyms perf test on ppc64le 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (13 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 14/17] perf powerpc: Fix kprobe and kretprobe handling with kallsyms on ppc64le Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 16/17] perf evlist: Extract perf_mmap__read() Arnaldo Carvalho de Melo ` (2 subsequent siblings) 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Naveen N. Rao, Mark Wielaard, Masami Hiramatsu, Thiago Jung Bauermann, linuxppc-dev, Arnaldo Carvalho de Melo From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> ppc64le functions have a Global Entry Point (GEP) and a Local Entry Point (LEP). While placing a probe, we always prefer the LEP since it catches function calls through both the GEP and the LEP. In order to do this, we fixup the function entry points during elf symbol table lookup to point to the LEPs. This works, but breaks 'perf test kallsyms' since the symbols loaded from the symbol table (pointing to the LEP) do not match the symbols in kallsyms. To fix this, we do not adjust all the symbols during symbol table load. Instead, we note down st_other in a newly introduced arch-specific member of perf symbol structure, and later use this to adjust the probe trace point. Reported-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Acked-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Acked-by: Balbir Singh <bsingharora@gmail.com> Cc: Mark Wielaard <mjw@redhat.com> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com> Cc: linuxppc-dev@lists.ozlabs.org Link: http://lkml.kernel.org/r/6be7c2b17e370100c2f79dd444509df7929bdd3e.1460451721.git.naveen.n.rao@linux.vnet.ibm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/arch/powerpc/util/sym-handling.c | 28 ++++++++++++++++++++-------- tools/perf/util/probe-event.c | 5 +++-- tools/perf/util/probe-event.h | 3 ++- tools/perf/util/symbol-elf.c | 7 ++++--- tools/perf/util/symbol.h | 3 ++- 5 files changed, 31 insertions(+), 15 deletions(-) diff --git a/tools/perf/arch/powerpc/util/sym-handling.c b/tools/perf/arch/powerpc/util/sym-handling.c index 6974ba0fa065..c6d0f91731a1 100644 --- a/tools/perf/arch/powerpc/util/sym-handling.c +++ b/tools/perf/arch/powerpc/util/sym-handling.c @@ -19,12 +19,6 @@ bool elf__needs_adjust_symbols(GElf_Ehdr ehdr) ehdr.e_type == ET_DYN; } -#if defined(_CALL_ELF) && _CALL_ELF == 2 -void arch__elf_sym_adjust(GElf_Sym *sym) -{ - sym->st_value += PPC64_LOCAL_ENTRY_OFFSET(sym->st_other); -} -#endif #endif #if !defined(_CALL_ELF) || _CALL_ELF != 2 @@ -65,11 +59,21 @@ bool arch__prefers_symtab(void) return true; } +#ifdef HAVE_LIBELF_SUPPORT +void arch__sym_update(struct symbol *s, GElf_Sym *sym) +{ + s->arch_sym = sym->st_other; +} +#endif + #define PPC64LE_LEP_OFFSET 8 void arch__fix_tev_from_maps(struct perf_probe_event *pev, - struct probe_trace_event *tev, struct map *map) + struct probe_trace_event *tev, struct map *map, + struct symbol *sym) { + int lep_offset; + /* * When probing at a function entry point, we normally always want the * LEP since that catches calls to the function through both the GEP and @@ -82,10 +86,18 @@ void arch__fix_tev_from_maps(struct perf_probe_event *pev, * * In addition, we shouldn't specify an offset for kretprobes. */ - if (pev->point.offset || pev->point.retprobe || !map) + if (pev->point.offset || pev->point.retprobe || !map || !sym) return; + lep_offset = PPC64_LOCAL_ENTRY_OFFSET(sym->arch_sym); + if (map->dso->symtab_type == DSO_BINARY_TYPE__KALLSYMS) tev->point.offset += PPC64LE_LEP_OFFSET; + else if (lep_offset) { + if (pev->uprobes) + tev->point.address += lep_offset; + else + tev->point.offset += lep_offset; + } } #endif diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index 85d82f4dc5e9..c82c625395ab 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c @@ -2477,7 +2477,8 @@ static int find_probe_functions(struct map *map, char *name, void __weak arch__fix_tev_from_maps(struct perf_probe_event *pev __maybe_unused, struct probe_trace_event *tev __maybe_unused, - struct map *map __maybe_unused) { } + struct map *map __maybe_unused, + struct symbol *sym __maybe_unused) { } /* * Find probe function addresses from map. @@ -2614,7 +2615,7 @@ static int find_probe_trace_events_from_map(struct perf_probe_event *pev, strdup_or_goto(pev->args[i].type, nomem_out); } - arch__fix_tev_from_maps(pev, tev, map); + arch__fix_tev_from_maps(pev, tev, map, sym); } if (ret == skipped) { ret = -ENOENT; diff --git a/tools/perf/util/probe-event.h b/tools/perf/util/probe-event.h index e2209623f981..5a27eb4fad05 100644 --- a/tools/perf/util/probe-event.h +++ b/tools/perf/util/probe-event.h @@ -154,7 +154,8 @@ int show_available_vars(struct perf_probe_event *pevs, int npevs, int show_available_funcs(const char *module, struct strfilter *filter, bool user); bool arch__prefers_symtab(void); void arch__fix_tev_from_maps(struct perf_probe_event *pev, - struct probe_trace_event *tev, struct map *map); + struct probe_trace_event *tev, struct map *map, + struct symbol *sym); /* If there is no space to write, returns -E2BIG. */ int e_snprintf(char *str, size_t size, const char *format, ...) diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c index 3f9d6798bd18..87a297dd8901 100644 --- a/tools/perf/util/symbol-elf.c +++ b/tools/perf/util/symbol-elf.c @@ -770,7 +770,8 @@ static bool want_demangle(bool is_kernel_sym) return is_kernel_sym ? symbol_conf.demangle_kernel : symbol_conf.demangle; } -void __weak arch__elf_sym_adjust(GElf_Sym *sym __maybe_unused) { } +void __weak arch__sym_update(struct symbol *s __maybe_unused, + GElf_Sym *sym __maybe_unused) { } int dso__load_sym(struct dso *dso, struct map *map, struct symsrc *syms_ss, struct symsrc *runtime_ss, @@ -947,8 +948,6 @@ int dso__load_sym(struct dso *dso, struct map *map, (sym.st_value & 1)) --sym.st_value; - arch__elf_sym_adjust(&sym); - if (dso->kernel || kmodule) { char dso_name[PATH_MAX]; @@ -1082,6 +1081,8 @@ new_symbol: if (!f) goto out_elf_end; + arch__sym_update(f, &sym); + if (filter && filter(curr_map, f)) symbol__delete(f); else { diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h index c8e43979ed5c..07211c2f8456 100644 --- a/tools/perf/util/symbol.h +++ b/tools/perf/util/symbol.h @@ -55,6 +55,7 @@ struct symbol { u16 namelen; u8 binding; bool ignore; + u8 arch_sym; char name[0]; }; @@ -323,7 +324,7 @@ int setup_intlist(struct intlist **list, const char *list_str, #ifdef HAVE_LIBELF_SUPPORT bool elf__needs_adjust_symbols(GElf_Ehdr ehdr); -void arch__elf_sym_adjust(GElf_Sym *sym); +void arch__sym_update(struct symbol *s, GElf_Sym *sym); #endif #define SYMBOL_A 0 -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 16/17] perf evlist: Extract perf_mmap__read() 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (14 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 15/17] perf symbols: Fix kallsyms perf test " Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 17/17] perf evlist: Rename variable in perf_mmap__read() Arnaldo Carvalho de Melo 2016-05-06 6:36 ` [GIT PULL 00/17] perf/core improvements and fixes Ingo Molnar 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Wang Nan, Peter Zijlstra, Zefan Li, pi3orama, Arnaldo Carvalho de Melo From: Wang Nan <wangnan0@huawei.com> Extract event reader from perf_evlist__mmap_read() to perf__mmap_read(). Future commit will feed it with manually computed 'head' and 'old' pointers. Signed-off-by: Wang Nan <wangnan0@huawei.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Zefan Li <lizefan@huawei.com> Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/1461723563-67451-2-git-send-email-wangnan0@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/evlist.c | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 85271e54a63b..96c71916e367 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -679,24 +679,15 @@ static struct perf_evsel *perf_evlist__event2evsel(struct perf_evlist *evlist, return NULL; } -union perf_event *perf_evlist__mmap_read(struct perf_evlist *evlist, int idx) +static union perf_event * +perf_mmap__read(struct perf_mmap *md, bool overwrite, u64 head, + u64 old, u64 *prev) { - struct perf_mmap *md = &evlist->mmap[idx]; - u64 head; - u64 old = md->prev; - int diff; unsigned char *data = md->base + page_size; union perf_event *event = NULL; + int diff = head - old; - /* - * Check if event was unmapped due to a POLLHUP/POLLERR. - */ - if (!atomic_read(&md->refcnt)) - return NULL; - - head = perf_mmap__read_head(md); - diff = head - old; - if (evlist->overwrite) { + if (overwrite) { /* * If we're further behind than half the buffer, there's a chance * the writer will bite our tail and mess up the samples under us. @@ -751,11 +742,29 @@ union perf_event *perf_evlist__mmap_read(struct perf_evlist *evlist, int idx) } broken_event: - md->prev = old; + if (prev) + *prev = old; return event; } +union perf_event *perf_evlist__mmap_read(struct perf_evlist *evlist, int idx) +{ + struct perf_mmap *md = &evlist->mmap[idx]; + u64 head; + u64 old = md->prev; + + /* + * Check if event was unmapped due to a POLLHUP/POLLERR. + */ + if (!atomic_read(&md->refcnt)) + return NULL; + + head = perf_mmap__read_head(md); + + return perf_mmap__read(md, evlist->overwrite, head, old, &md->prev); +} + static bool perf_mmap__empty(struct perf_mmap *md) { return perf_mmap__read_head(md) == md->prev && !md->auxtrace_mmap.base; -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 17/17] perf evlist: Rename variable in perf_mmap__read() 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (15 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 16/17] perf evlist: Extract perf_mmap__read() Arnaldo Carvalho de Melo @ 2016-05-06 0:29 ` Arnaldo Carvalho de Melo 2016-05-06 6:36 ` [GIT PULL 00/17] perf/core improvements and fixes Ingo Molnar 17 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-05-06 0:29 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Wang Nan, Peter Zijlstra, Zefan Li, pi3orama, Arnaldo Carvalho de Melo From: Wang Nan <wangnan0@huawei.com> In perf_mmap__read(), give better names to pointers. Original name 'old' and 'head' directly related to pointers in ring buffer control page. For backward ring buffer, the meaning of 'head' point is not 'the first byte of free space', but 'the first byte of the last record'. To reduce confusion, rename 'old' to 'start', 'head' to 'end'. 'start' -> 'end' is the direction the records should be read from. Change parameter order. Change 'overwrite' to 'check_messup'. When reading from 'head', no need to check messup for for backward ring buffer. Signed-off-by: Wang Nan <wangnan0@huawei.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Zefan Li <lizefan@huawei.com> Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/1461723563-67451-3-git-send-email-wangnan0@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/evlist.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 96c71916e367..17cd01421e7f 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -679,30 +679,31 @@ static struct perf_evsel *perf_evlist__event2evsel(struct perf_evlist *evlist, return NULL; } +/* When check_messup is true, 'end' must points to a good entry */ static union perf_event * -perf_mmap__read(struct perf_mmap *md, bool overwrite, u64 head, - u64 old, u64 *prev) +perf_mmap__read(struct perf_mmap *md, bool check_messup, u64 start, + u64 end, u64 *prev) { unsigned char *data = md->base + page_size; union perf_event *event = NULL; - int diff = head - old; + int diff = end - start; - if (overwrite) { + if (check_messup) { /* * If we're further behind than half the buffer, there's a chance * the writer will bite our tail and mess up the samples under us. * - * If we somehow ended up ahead of the head, we got messed up. + * If we somehow ended up ahead of the 'end', we got messed up. * - * In either case, truncate and restart at head. + * In either case, truncate and restart at 'end'. */ if (diff > md->mask / 2 || diff < 0) { fprintf(stderr, "WARNING: failed to keep up with mmap data.\n"); /* - * head points to a known good entry, start there. + * 'end' points to a known good entry, start there. */ - old = head; + start = end; diff = 0; } } @@ -710,7 +711,7 @@ perf_mmap__read(struct perf_mmap *md, bool overwrite, u64 head, if (diff >= (int)sizeof(event->header)) { size_t size; - event = (union perf_event *)&data[old & md->mask]; + event = (union perf_event *)&data[start & md->mask]; size = event->header.size; if (size < sizeof(event->header) || diff < (int)size) { @@ -722,8 +723,8 @@ perf_mmap__read(struct perf_mmap *md, bool overwrite, u64 head, * Event straddles the mmap boundary -- header should always * be inside due to u64 alignment of output. */ - if ((old & md->mask) + size != ((old + size) & md->mask)) { - unsigned int offset = old; + if ((start & md->mask) + size != ((start + size) & md->mask)) { + unsigned int offset = start; unsigned int len = min(sizeof(*event), size), cpy; void *dst = md->event_copy; @@ -738,12 +739,12 @@ perf_mmap__read(struct perf_mmap *md, bool overwrite, u64 head, event = (union perf_event *) md->event_copy; } - old += size; + start += size; } broken_event: if (prev) - *prev = old; + *prev = start; return event; } @@ -762,7 +763,7 @@ union perf_event *perf_evlist__mmap_read(struct perf_evlist *evlist, int idx) head = perf_mmap__read_head(md); - return perf_mmap__read(md, evlist->overwrite, head, old, &md->prev); + return perf_mmap__read(md, evlist->overwrite, old, head, &md->prev); } static bool perf_mmap__empty(struct perf_mmap *md) -- 2.5.5 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* Re: [GIT PULL 00/17] perf/core improvements and fixes 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (16 preceding siblings ...) 2016-05-06 0:29 ` [PATCH 17/17] perf evlist: Rename variable in perf_mmap__read() Arnaldo Carvalho de Melo @ 2016-05-06 6:36 ` Ingo Molnar 17 siblings, 0 replies; 32+ messages in thread From: Ingo Molnar @ 2016-05-06 6:36 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Ananth N Mavinakayanahalli, Balbir Singh, David Ahern, Ian Munsie, Jiri Olsa, linuxppc-dev, Mark Wielaard, Masami Hiramatsu, Michael Ellerman, Milian Wolff, Namhyung Kim, Naveen N . Rao, Peter Zijlstra, pi3orama, Thiago Jung Bauermann, Wang Nan, Zefan Li, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > > The following changes since commit 1b6de5917172967acd8db4d222df4225d23a8a60: > > perf/x86/intel/pt: Convert ACCESS_ONCE()s (2016-05-05 10:16:29 +0200) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160505 > > for you to fetch changes up to b6b85dad30ad7e7394990e2317a780577974a4e6: > > perf evlist: Rename variable in perf_mmap__read() (2016-05-05 21:04:04 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > User visible: > > - Order output of 'perf trace --summary' better, now the threads will > appear ascending order of number of events, and then, for each, in > descending order of syscalls by the time spent in the syscalls, so > that the last page produced can be the one about the most interesting > thread straced, suggested by Milian Wolff (Arnaldo Carvalho de Melo) > > - Do not show the runtime_ms for a thread when not collecting it, that > is done so far only with 'perf trace --sched' (Arnaldo Carvalho de Melo) > > - Fix kallsyms perf test on ppc64le (Naveen N. Rao) > > Infrastructure: > > - Move global variables related to presence of some keys in the sort order to a > per hist struct, to allow code like the hists browser to work with multiple > hists with different lists of columns (Jiri Olsa) > > - Add support for generating bpf prologue in powerpc (Naveen N. Rao) > > - Fix kprobe and kretprobe handling with kallsyms on ppc64le (Naveen N. Rao) > > - evlist mmap changes, prep work for supporting reading backwards (Wang Nan) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (5): > perf machine: Introduce number of threads member > perf tools: Add template for generating rbtree resort class > perf trace: Sort summary output by number of events > perf trace: Sort syscalls stats by msecs in --summary > perf trace: Do not show the runtime_ms for a thread when not collecting it > > Jiri Olsa (7): > perf hists: Move sort__need_collapse into struct perf_hpp_list > perf hists: Move sort__has_parent into struct perf_hpp_list > perf hists: Move sort__has_sym into struct perf_hpp_list > perf hists: Move sort__has_dso into struct perf_hpp_list > perf hists: Move sort__has_socket into struct perf_hpp_list > perf hists: Move sort__has_thread into struct perf_hpp_list > perf hists: Move sort__has_comm into struct perf_hpp_list > > Naveen N. Rao (3): > perf tools powerpc: Add support for generating bpf prologue > perf powerpc: Fix kprobe and kretprobe handling with kallsyms on ppc64le > perf symbols: Fix kallsyms perf test on ppc64le > > Wang Nan (2): > perf evlist: Extract perf_mmap__read() > perf evlist: Rename variable in perf_mmap__read() > > tools/perf/arch/powerpc/Makefile | 1 + > tools/perf/arch/powerpc/util/dwarf-regs.c | 40 +++++--- > tools/perf/arch/powerpc/util/sym-handling.c | 43 ++++++-- > tools/perf/builtin-diff.c | 4 +- > tools/perf/builtin-report.c | 4 +- > tools/perf/builtin-top.c | 8 +- > tools/perf/builtin-trace.c | 87 ++++++++++------ > tools/perf/tests/hists_common.c | 2 +- > tools/perf/tests/hists_cumulate.c | 2 +- > tools/perf/tests/hists_link.c | 4 +- > tools/perf/tests/hists_output.c | 2 +- > tools/perf/ui/browsers/hists.c | 32 +++--- > tools/perf/ui/gtk/hists.c | 2 +- > tools/perf/ui/hist.c | 2 +- > tools/perf/util/annotate.c | 2 +- > tools/perf/util/callchain.c | 2 +- > tools/perf/util/evlist.c | 56 ++++++----- > tools/perf/util/hist.c | 14 +-- > tools/perf/util/hist.h | 10 ++ > tools/perf/util/machine.c | 9 +- > tools/perf/util/machine.h | 1 + > tools/perf/util/probe-event.c | 5 +- > tools/perf/util/probe-event.h | 3 +- > tools/perf/util/rb_resort.h | 149 ++++++++++++++++++++++++++++ > tools/perf/util/sort.c | 35 +++---- > tools/perf/util/sort.h | 7 -- > tools/perf/util/symbol-elf.c | 7 +- > tools/perf/util/symbol.h | 3 +- > 28 files changed, 382 insertions(+), 154 deletions(-) > create mode 100644 tools/perf/util/rb_resort.h Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 32+ messages in thread
* [GIT PULL 00/17] perf/core improvements and fixes @ 2019-02-21 1:25 Arnaldo Carvalho de Melo 2019-02-28 7:28 ` Ingo Molnar 0 siblings, 1 reply; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2019-02-21 1:25 UTC (permalink / raw) To: Ingo Molnar Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo, He Kuang, Jonas Rabenstein, Thomas Richter, Tommi Rantala, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo Test results at the end of this message, as usual. The following changes since commit 43f4e6279f05eefac058a3524e184cecae463bfe: Merge tag 'perf-core-for-mingo-5.1-20190214' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2019-02-15 10:19:11 +0100) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-5.1-20190220 for you to fetch changes up to b4409ae112caa6315f6ee678e953b9fc93e6919c: perf tools: Make rm_rf() remove single file (2019-02-20 17:09:28 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: perf report: He Kuang: - Don't shadow inlined symbol with different addr range. perf script: Jiri Olsa: - Allow +- operator to ask for -F to add/remove fields to the default set, for instance to ask for the removal of the 'cpu' field in tracepoint events, adding 'period' to that kind of events, etc. perf test: Thomas Richter: - Fix scheduler tracepoint signedness of COMM fields failure of 'evsel-tp-sched' test on s390 and other arches. Tommi Rantala: - Skip trace+probe_vfs_getname.sh when 'perf trace' is not built. perf trace: Arnaldo Carvalho de Melo: - Add initial BPF map dumper, initially just for the current, minimal needs of the augmented_raw_syscalls BPF example used to collect pointer args payloads that uses BPF maps for pid and syscall filtering, but will in time have features similar to 'perf stat' --interval-print, --interval-clear, ways to signal from a BPF event that a specific map (or range of that map) should be printed, optionally as a histogram, etc. General: Jiri Olsa: - Add cpu and numa topologies classes for further reuse, fixing some issues in the process. - Fixup some warnings and debug levels. - Make rm_rf() remove single file, not just directories. Documentation: Jonas Rabenstein: - Fix HEADER_CMDLINE description in perf.data documentation. - Fix documentation of the Flags section in perf.data. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (2): perf bpf: Add bpf_map dumper perf trace: Allow dumping a BPF map after setting up BPF events He Kuang (1): perf report: Don't shadow inlined symbol with different addr range Jiri Olsa (10): perf header: Fix wrong node write in NUMA_TOPOLOGY feature perf tools: Add cpu_topology object perf tools: Add numa_topology object perf tools: Use sysfs__mountpoint() when reading cpu topology perf session: Don't report zero period samples for slave events perf evsel: Force sample_type for slave events perf script: Allow +- operator for type specific fields option perf bpf-event: Add missing new line into pr_debug call perf cpumap: Increase debug level for cpu_map__snprint verbose output perf tools: Make rm_rf() remove single file Jonas Rabenstein (2): perf doc: Fix HEADER_CMDLINE description in perf.data documentation perf doc: Fix documentation of the Flags section in perf.data Thomas Richter (1): perf test: Fix failure of 'evsel-tp-sched' test on s390 Tommi Rantala (1): perf tests shell: Skip trace+probe_vfs_getname.sh if built without trace support tools/perf/Documentation/perf-script.txt | 6 + tools/perf/Documentation/perf-trace.txt | 8 + tools/perf/Documentation/perf.data-file-format.txt | 11 +- tools/perf/builtin-script.c | 8 + tools/perf/builtin-trace.c | 19 ++ tools/perf/tests/evsel-tp-sched.c | 6 +- tools/perf/tests/shell/lib/probe.sh | 5 + tools/perf/tests/shell/trace+probe_vfs_getname.sh | 1 + tools/perf/util/Build | 2 + tools/perf/util/bpf-event.c | 2 +- tools/perf/util/bpf_map.c | 72 ++++++ tools/perf/util/bpf_map.h | 22 ++ tools/perf/util/cpumap.c | 2 +- tools/perf/util/cputopo.c | 277 +++++++++++++++++++++ tools/perf/util/cputopo.h | 33 +++ tools/perf/util/evsel.c | 8 + tools/perf/util/header.c | 269 +++----------------- tools/perf/util/session.c | 7 + tools/perf/util/sort.c | 10 +- tools/perf/util/srcline.c | 2 +- tools/perf/util/util.c | 16 +- 21 files changed, 530 insertions(+), 256 deletions(-) create mode 100644 tools/perf/util/bpf_map.c create mode 100644 tools/perf/util/bpf_map.h create mode 100644 tools/perf/util/cputopo.c create mode 100644 tools/perf/util/cputopo.h Test results: The first ones are container based builds of tools/perf with and without libelf support. Where clang is available, it is also used to build perf with/without libelf, and building with LIBCLANGLLVM=1 (built-in clang) with gcc and clang when clang and its devel libraries are installed. The objtool and samples/bpf/ builds are disabled now that I'm switching from using the sources in a local volume to fetching them from a http server to build it inside the container, to make it easier to build in a container cluster. Those will come back later. Several are cross builds, the ones with -x-ARCH and the android one, and those may not have all the features built, due to lack of multi-arch devel packages, available and being used so far on just a few, like debian:experimental-x-{arm64,mipsel}. The 'perf test' one will perform a variety of tests exercising tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands with a variety of command line event specifications to then intercept the sys_perf_event syscall to check that the perf_event_attr fields are set up as expected, among a variety of other unit tests. Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/ with a variety of feature sets, exercising the build with an incomplete set of features as well as with a complete one. It is planned to have it run on each of the containers mentioned above, using some container orchestration infrastructure. Get in contact if interested in helping having this in place. # export PERF_TARBALL=http://192.168.124.1/perf/perf-5.0.0-rc5.tar.xz # dm 1 alpine:3.4 : Ok gcc (Alpine 5.3.0) 5.3.0 2 alpine:3.5 : Ok gcc (Alpine 6.2.1) 6.2.1 20160822 3 alpine:3.6 : Ok gcc (Alpine 6.3.0) 6.3.0 4 alpine:3.7 : Ok gcc (Alpine 6.4.0) 6.4.0 5 alpine:3.8 : Ok gcc (Alpine 6.4.0) 6.4.0 6 alpine:3.9 : Ok gcc (Alpine 8.2.0) 8.2.0 7 alpine:edge : Ok gcc (Alpine 8.2.0) 8.2.0 8 amazonlinux:1 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28) 9 amazonlinux:2 : Ok gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5) 10 android-ndk:r12b-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 11 android-ndk:r15c-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 12 centos:5 : Ok gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55) 13 centos:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23) 14 centos:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36) 15 clearlinux:latest : Ok gcc (Clear Linux OS for Intel Architecture) 8.2.1 20180502 16 debian:7 : Ok gcc (Debian 4.7.2-5) 4.7.2 17 debian:8 : Ok gcc (Debian 4.9.2-10+deb8u2) 4.9.2 18 debian:9 : Ok gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516 19 debian:experimental : Ok gcc (Debian 8.2.0-17) 8.2.1 20190204 20 debian:experimental-x-arm64 : Ok aarch64-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0 21 debian:experimental-x-mips : Ok mips-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0 22 debian:experimental-x-mips64 : Ok mips64-linux-gnuabi64-gcc (Debian 8.2.0-16) 8.2.0 23 fedora:20 : Ok gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7) 24 fedora:21 : Ok gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6) 25 fedora:22 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) 26 fedora:23 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) 27 fedora:24 : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1) 28 fedora:24-x-ARC-uClibc : Ok arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710 29 fedora:25 : Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1) 30 fedora:26 : Ok gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2) 31 fedora:27 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6) 32 fedora:28 : Ok gcc (GCC) 8.2.1 20181215 (Red Hat 8.2.1-6) 33 fedora:29 : Ok gcc (GCC) 8.2.1 20181215 (Red Hat 8.2.1-6) 34 fedora:30 : Ok gcc (GCC) 9.0.1 20190203 (Red Hat 9.0.1-0.3) 35 fedora:rawhide : Ok gcc (GCC) 9.0.0 20190119 (Red Hat 9.0.0-0.3) 36 gentoo-stage3-amd64:latest : Ok gcc (Gentoo 7.3.0-r3 p1.4) 7.3.0 37 mageia:5 : Ok gcc (GCC) 4.9.2 38 mageia:6 : Ok gcc (Mageia 5.5.0-1.mga6) 5.5.0 39 opensuse:13.2 : Ok gcc (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064] 40 opensuse:15.0 : Ok gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812] 41 opensuse:15.1 : Ok gcc (SUSE Linux) 7.4.0 42 opensuse:42.1 : Ok gcc (SUSE Linux) 4.8.5 43 opensuse:42.2 : Ok gcc (SUSE Linux) 4.8.5 44 opensuse:42.3 : Ok gcc (SUSE Linux) 4.8.5 45 opensuse:tumbleweed : Ok gcc (SUSE Linux) 8.2.1 20190103 [gcc-8-branch revision 267549] 46 oraclelinux:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1) 47 oraclelinux:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36.0.1) 48 ubuntu:12.04.5 : Ok gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 49 ubuntu:14.04.4 : Ok gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4 50 ubuntu:14.04.4-x-linaro-arm64 : Ok aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0 51 ubuntu:16.04 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609 52 ubuntu:16.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 53 ubuntu:16.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 54 ubuntu:16.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 55 ubuntu:16.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 56 ubuntu:16.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 57 ubuntu:16.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 58 ubuntu:17.10 : Ok gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0 59 ubuntu:18.04 : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 60 ubuntu:18.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.3.0-27ubuntu1~18.04) 7.3.0 61 ubuntu:18.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.3.0-27ubuntu1~18.04) 7.3.0 62 ubuntu:18.04-x-m68k : Ok m68k-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 63 ubuntu:18.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 64 ubuntu:18.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 65 ubuntu:18.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 66 ubuntu:18.04-x-riscv64 : Ok riscv64-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 67 ubuntu:18.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 68 ubuntu:18.04-x-sh4 : Ok sh4-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 69 ubuntu:18.04-x-sparc64 : Ok sparc64-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 70 ubuntu:18.10 : Ok gcc (Ubuntu 8.2.0-7ubuntu1) 8.2.0 71 ubuntu:19.04 : Ok gcc (Ubuntu 8.2.0-20ubuntu1) 8.2.0 72 ubuntu:19.04-x-alpha : Ok alpha-linux-gnu-gcc (Ubuntu 8.2.0-20ubuntu1) 8.2.0 73 ubuntu:19.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 8.2.0-20ubuntu1) 8.2.0 74 ubuntu:19.04-x-hppa : Ok hppa-linux-gnu-gcc (Ubuntu 8.2.0-20ubuntu1) 8.2.0 # # uname -a Linux quaco 4.20.6-200.fc29.x86_64 #1 SMP Thu Jan 31 15:50:43 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux # git log --oneline -1 b4409ae112ca perf tools: Make rm_rf() remove single file # perf version --build-options perf version 5.0.rc5.gb4409a dwarf: [ on ] # HAVE_DWARF_SUPPORT dwarf_getlocations: [ on ] # HAVE_DWARF_GETLOCATIONS_SUPPORT glibc: [ on ] # HAVE_GLIBC_SUPPORT gtk2: [ on ] # HAVE_GTK2_SUPPORT syscall_table: [ on ] # HAVE_SYSCALL_TABLE_SUPPORT libbfd: [ on ] # HAVE_LIBBFD_SUPPORT libelf: [ on ] # HAVE_LIBELF_SUPPORT libnuma: [ on ] # HAVE_LIBNUMA_SUPPORT numa_num_possible_cpus: [ on ] # HAVE_LIBNUMA_SUPPORT libperl: [ on ] # HAVE_LIBPERL_SUPPORT libpython: [ on ] # HAVE_LIBPYTHON_SUPPORT libslang: [ on ] # HAVE_SLANG_SUPPORT libcrypto: [ on ] # HAVE_LIBCRYPTO_SUPPORT libunwind: [ on ] # HAVE_LIBUNWIND_SUPPORT libdw-dwarf-unwind: [ on ] # HAVE_DWARF_SUPPORT zlib: [ on ] # HAVE_ZLIB_SUPPORT lzma: [ on ] # HAVE_LZMA_SUPPORT get_cpuid: [ on ] # HAVE_AUXTRACE_SUPPORT bpf: [ on ] # HAVE_LIBBPF_SUPPORT # perf test 1: vmlinux symtab matches kallsyms : Ok 2: Detect openat syscall event : Ok 3: Detect openat syscall event on all cpus : Ok 4: Read samples using the mmap interface : Ok 5: Test data source output : Ok 6: Parse event definition strings : Ok 7: Simple expression parser : Ok 8: PERF_RECORD_* events & perf_sample fields : Ok 9: Parse perf pmu format : Ok 10: DSO data read : Ok 11: DSO data cache : Ok 12: DSO data reopen : Ok 13: Roundtrip evsel->name : Ok 14: Parse sched tracepoints fields : Ok 15: syscalls:sys_enter_openat event fields : Ok 16: Setup struct perf_event_attr : Ok 17: Match and link multiple hists : Ok 18: 'import perf' in python : Ok 19: Breakpoint overflow signal handler : Ok 20: Breakpoint overflow sampling : Ok 21: Breakpoint accounting : Ok 22: Watchpoint : 22.1: Read Only Watchpoint : Skip 22.2: Write Only Watchpoint : Ok 22.3: Read / Write Watchpoint : Ok 22.4: Modify Watchpoint : Ok 23: Number of exit events of a simple workload : Ok 24: Software clock events period values : Ok 25: Object code reading : Ok 26: Sample parsing : Ok 27: Use a dummy software event to keep tracking : Ok 28: Parse with no sample_id_all bit set : Ok 29: Filter hist entries : Ok 30: Lookup mmap thread : Ok 31: Share thread mg : Ok 32: Sort output of hist entries : Ok 33: Cumulate child hist entries : Ok 34: Track with sched_switch : Ok 35: Filter fds with revents mask in a fdarray : Ok 36: Add fd to a fdarray, making it autogrow : Ok 37: kmod_path__parse : Ok 38: Thread map : Ok 39: LLVM search and compile : 39.1: Basic BPF llvm compile : Ok 39.2: kbuild searching : Ok 39.3: Compile source for BPF prologue generation : Ok 39.4: Compile source for BPF relocation : Ok 40: Session topology : Ok 41: BPF filter : 41.1: Basic BPF filtering : Ok 41.2: BPF pinning : Ok 41.3: BPF prologue generation : Ok 41.4: BPF relocation checker : Ok 42: Synthesize thread map : Ok 43: Remove thread map : Ok 44: Synthesize cpu map : Ok 45: Synthesize stat config : Ok 46: Synthesize stat : Ok 47: Synthesize stat round : Ok 48: Synthesize attr update : Ok 49: Event times : Ok 50: Read backward ring buffer : Ok 51: Print cpu map : Ok 52: Probe SDT events : Ok 53: is_printable_array : Ok 54: Print bitmap : Ok 55: perf hooks : Ok 56: builtin clang support : Skip (not compiled in) 57: unit_number__scnprintf : Ok 58: mem2node : Ok 59: x86 rdpmc : Ok 60: Convert perf time to TSC : Ok 61: DWARF unwind : Ok 62: x86 instruction decoder - new instructions : Ok 63: x86 bp modify : Ok 64: probe libc's inet_pton & backtrace it with ping : Ok 65: Use vfs_getname probe to get syscall args filenames : Ok 66: Add vfs_getname probe to get syscall args filenames : Ok 67: Check open filename arg using perf trace + vfs_getname: Ok $ make -C tools/perf build-test make: Entering directory '/home/acme/git/perf/tools/perf' - tarpkg: ./tests/perf-targz-src-pkg . make_no_libelf_O: make NO_LIBELF=1 make_util_pmu_bison_o_O: make util/pmu-bison.o make_perf_o_O: make perf.o make_install_bin_O: make install-bin make_no_libbionic_O: make NO_LIBBIONIC=1 make_help_O: make help make_no_demangle_O: make NO_DEMANGLE=1 make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1 make_with_clangllvm_O: make LIBCLANGLLVM=1 make_install_O: make install make_no_backtrace_O: make NO_BACKTRACE=1 make_no_libunwind_O: make NO_LIBUNWIND=1 make_no_libperl_O: make NO_LIBPERL=1 make_no_libaudit_O: make NO_LIBAUDIT=1 make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 make_no_slang_O: make NO_SLANG=1 make_no_libbpf_O: make NO_LIBBPF=1 make_cscope_O: make cscope make_no_newt_O: make NO_NEWT=1 make_no_libpython_O: make NO_LIBPYTHON=1 make_debug_O: make DEBUG=1 make_util_map_o_O: make util/map.o make_tags_O: make tags make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1 make_clean_all_O: make clean all make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1 make_no_libnuma_O: make NO_LIBNUMA=1 make_static_O: make LDFLAGS=-static make_install_prefix_slash_O: make install prefix=/tmp/krava/ make_no_gtk2_O: make NO_GTK2=1 make_with_babeltrace_O: make LIBBABELTRACE=1 make_install_prefix_O: make install prefix=/tmp/krava make_no_auxtrace_O: make NO_AUXTRACE=1 make_doc_O: make doc make_pure_O: make OK make: Leaving directory '/home/acme/git/perf/tools/perf' $ ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [GIT PULL 00/17] perf/core improvements and fixes 2019-02-21 1:25 Arnaldo Carvalho de Melo @ 2019-02-28 7:28 ` Ingo Molnar 0 siblings, 0 replies; 32+ messages in thread From: Ingo Molnar @ 2019-02-28 7:28 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Jiri Olsa, Namhyung Kim, Clark Williams, linux-kernel, linux-perf-users, He Kuang, Jonas Rabenstein, Thomas Richter, Tommi Rantala, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > Test results at the end of this message, as usual. > > The following changes since commit 43f4e6279f05eefac058a3524e184cecae463bfe: > > Merge tag 'perf-core-for-mingo-5.1-20190214' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2019-02-15 10:19:11 +0100) > > are available in the Git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-5.1-20190220 > > for you to fetch changes up to b4409ae112caa6315f6ee678e953b9fc93e6919c: > > perf tools: Make rm_rf() remove single file (2019-02-20 17:09:28 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > perf report: > > He Kuang: > > - Don't shadow inlined symbol with different addr range. > > perf script: > > Jiri Olsa: > > - Allow +- operator to ask for -F to add/remove fields to > the default set, for instance to ask for the removal of the > 'cpu' field in tracepoint events, adding 'period' to that > kind of events, etc. > > perf test: > > Thomas Richter: > > - Fix scheduler tracepoint signedness of COMM fields failure of > 'evsel-tp-sched' test on s390 and other arches. > > Tommi Rantala: > > - Skip trace+probe_vfs_getname.sh when 'perf trace' is not built. > > perf trace: > > Arnaldo Carvalho de Melo: > > - Add initial BPF map dumper, initially just for the current, minimal > needs of the augmented_raw_syscalls BPF example used to collect > pointer args payloads that uses BPF maps for pid and syscall filtering, > but will in time have features similar to 'perf stat' --interval-print, > --interval-clear, ways to signal from a BPF event that a specific > map (or range of that map) should be printed, optionally as a > histogram, etc. > > General: > > Jiri Olsa: > > - Add cpu and numa topologies classes for further reuse, fixing some > issues in the process. > > - Fixup some warnings and debug levels. > > - Make rm_rf() remove single file, not just directories. > > Documentation: > > Jonas Rabenstein: > > - Fix HEADER_CMDLINE description in perf.data documentation. > > - Fix documentation of the Flags section in perf.data. > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (2): > perf bpf: Add bpf_map dumper > perf trace: Allow dumping a BPF map after setting up BPF events > > He Kuang (1): > perf report: Don't shadow inlined symbol with different addr range > > Jiri Olsa (10): > perf header: Fix wrong node write in NUMA_TOPOLOGY feature > perf tools: Add cpu_topology object > perf tools: Add numa_topology object > perf tools: Use sysfs__mountpoint() when reading cpu topology > perf session: Don't report zero period samples for slave events > perf evsel: Force sample_type for slave events > perf script: Allow +- operator for type specific fields option > perf bpf-event: Add missing new line into pr_debug call > perf cpumap: Increase debug level for cpu_map__snprint verbose output > perf tools: Make rm_rf() remove single file > > Jonas Rabenstein (2): > perf doc: Fix HEADER_CMDLINE description in perf.data documentation > perf doc: Fix documentation of the Flags section in perf.data > > Thomas Richter (1): > perf test: Fix failure of 'evsel-tp-sched' test on s390 > > Tommi Rantala (1): > perf tests shell: Skip trace+probe_vfs_getname.sh if built without trace support > > tools/perf/Documentation/perf-script.txt | 6 + > tools/perf/Documentation/perf-trace.txt | 8 + > tools/perf/Documentation/perf.data-file-format.txt | 11 +- > tools/perf/builtin-script.c | 8 + > tools/perf/builtin-trace.c | 19 ++ > tools/perf/tests/evsel-tp-sched.c | 6 +- > tools/perf/tests/shell/lib/probe.sh | 5 + > tools/perf/tests/shell/trace+probe_vfs_getname.sh | 1 + > tools/perf/util/Build | 2 + > tools/perf/util/bpf-event.c | 2 +- > tools/perf/util/bpf_map.c | 72 ++++++ > tools/perf/util/bpf_map.h | 22 ++ > tools/perf/util/cpumap.c | 2 +- > tools/perf/util/cputopo.c | 277 +++++++++++++++++++++ > tools/perf/util/cputopo.h | 33 +++ > tools/perf/util/evsel.c | 8 + > tools/perf/util/header.c | 269 +++----------------- > tools/perf/util/session.c | 7 + > tools/perf/util/sort.c | 10 +- > tools/perf/util/srcline.c | 2 +- > tools/perf/util/util.c | 16 +- > 21 files changed, 530 insertions(+), 256 deletions(-) > create mode 100644 tools/perf/util/bpf_map.c > create mode 100644 tools/perf/util/bpf_map.h > create mode 100644 tools/perf/util/cputopo.c > create mode 100644 tools/perf/util/cputopo.h Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 32+ messages in thread
* [GIT PULL 00/17] perf/core improvements and fixes @ 2018-04-04 2:21 ` Arnaldo Carvalho de Melo 0 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2018-04-04 2:21 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Shishkin, Andi Kleen, Changbin Du, David Ahern, Jin Yao, Jiri Olsa, Kan Liang, Kim Phillips, Kirill A . Shutemov, Linus Torvalds, Martin Liška, Maxim Kuvyrkov, Milian Wolff, Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo Test results at the end of this message, as usual. The following changes since commit 1159e09476536250c2a0173d4298d15114df7a89: perf/x86/intel: Enable C-state residency events for Cannon Lake (2018-03-31 11:28:36 +0200) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.17-20180403 for you to fetch changes up to 51125a29a395048fdb3429b8c4ca0ada57097744: perf trace: Remove redundant ')' (2018-04-03 16:16:41 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: - Show only failing syscalls with 'perf trace --failure' (Arnaldo Carvalho de Melo) e.g: See what 'openat' syscalls are failing: # perf trace --failure -e openat 762.323 ( 0.007 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video2) = -1 ENOENT No such file or directory <SNIP N /dev/videoN open attempts... sigh, where is that improvised camera lid?!? 8-) > 790.228 ( 0.008 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video63) = -1 ENOENT No such file or directory ^C# - Show information about the event (freq, nr_samples, total period/nr_events) in the annotate --tui and --stdio2 'perf annotate' output, similar to the first line in the 'perf report --tui', but just for the samples for the annotated symbol (Arnaldo Carvalho de Melo) - Introduce 'perf version --build-options' to show what features were linked, aliased as well as a shorter 'perf -vv' (Jin Yao) - Add a "dso_size" sort order (Kim Phillips) - Remove redundant ')' in the tracepoint output in 'perf trace' (Changbin Du) - Synchronize x86's cpufeatures.h, no effect on tools (Arnaldo Carvalho de Melo) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (9): tools headers: Synchronize x86's cpufeatures.h perf trace: Show only failing syscalls perf hists browser: Rename perf_evsel_browser_title to a more descriptive name perf hists: Introduce hists__scnprint_title() perf hists: Move hists__scnprintf_title() away from the TUI code perf ui browser: Move the extra title lines from the hists browser perf annotate: Introduce annotation__scnprintf_samples_period() method perf annotate browser: Show extra title line with event information perf annotate stdio2: Print more descriptive event information header Changbin Du (1): perf trace: Remove redundant ')' Jin Yao (5): perf config: Add some new -DHAVE_XXX to CFLAGS perf config: Rename to HAVE_DWARF_GETLOCATIONS_SUPPORT perf version: Print the compiled-in status of libraries perf tools: Add 'perf -vv' as an alias to 'perf version --build-options' perf version: Add man page Jiri Olsa (1): tools include: Add config.h header file Kim Phillips (1): perf tools: Add a "dso_size" sort order tools/arch/x86/include/asm/cpufeatures.h | 2 + tools/include/tools/config.h | 34 ++++++++ tools/perf/Documentation/perf-report.txt | 1 + tools/perf/Documentation/perf-trace.txt | 3 + tools/perf/Documentation/perf-version.txt | 24 ++++++ tools/perf/Makefile.config | 8 +- tools/perf/builtin-trace.c | 11 ++- tools/perf/builtin-version.c | 82 +++++++++++++++++++- tools/perf/perf.c | 6 ++ tools/perf/perf.h | 1 + tools/perf/ui/browser.c | 8 +- tools/perf/ui/browser.h | 2 + tools/perf/ui/browsers/annotate.c | 31 +++++++- tools/perf/ui/browsers/hists.c | 125 +++++++----------------------- tools/perf/util/annotate.c | 48 ++++++++++-- tools/perf/util/annotate.h | 12 +++ tools/perf/util/dwarf-aux.c | 2 +- tools/perf/util/hist.c | 81 +++++++++++++++++++ tools/perf/util/hist.h | 7 ++ tools/perf/util/map.h | 4 + tools/perf/util/sort.c | 41 ++++++++++ tools/perf/util/sort.h | 1 + 22 files changed, 418 insertions(+), 116 deletions(-) create mode 100644 tools/include/tools/config.h create mode 100644 tools/perf/Documentation/perf-version.txt Test results: The first ones are container (docker) based builds of tools/perf with and without libelf support. Where clang is available, it is also used to build perf with/without libelf. The objtool and samples/bpf/ builds are disabled now that I'm switching from using the sources in a local volume to fetching them from a http server to build it inside the container, to make it easier to build in a container cluster. Those will come back later. Several are cross builds, the ones with -x-ARCH and the android one, and those may not have all the features built, due to lack of multi-arch devel packages, available and being used so far on just a few, like debian:experimental-x-{arm64,mipsel}. The 'perf test' one will perform a variety of tests exercising tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands with a variety of command line event specifications to then intercept the sys_perf_event syscall to check that the perf_event_attr fields are set up as expected, among a variety of other unit tests. Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/ with a variety of feature sets, exercising the build with an incomplete set of features as well as with a complete one. It is planned to have it run on each of the containers mentioned above, using some container orchestration infrastructure. Get in contact if interested in helping having this in place. # dm 1 alpine:3.4 : Ok gcc (Alpine 5.3.0) 5.3.0 2 alpine:3.5 : Ok gcc (Alpine 6.2.1) 6.2.1 20160822 3 alpine:3.6 : Ok gcc (Alpine 6.3.0) 6.3.0 4 alpine:3.7 : Ok gcc (Alpine 6.4.0) 6.4.0 5 alpine:edge : Ok gcc (Alpine 6.4.0) 6.4.0 6 amazonlinux:1 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11) 7 amazonlinux:2 : Ok gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2) 8 android-ndk:r12b-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 9 android-ndk:r15c-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 10 centos:5 : Ok gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55) 11 centos:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) 12 centos:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) 13 debian:7 : Ok gcc (Debian 4.7.2-5) 4.7.2 14 debian:8 : Ok gcc (Debian 4.9.2-10+deb8u1) 4.9.2 15 debian:9 : Ok gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516 16 debian:experimental : Ok gcc (Debian 7.3.0-14) 7.3.0 17 debian:experimental-x-arm64 : Ok aarch64-linux-gnu-gcc (Debian 7.3.0-12) 7.3.0 18 debian:experimental-x-mips : Ok mips-linux-gnu-gcc (Debian 7.3.0-12) 7.3.0 19 debian:experimental-x-mips64 : Ok mips64-linux-gnuabi64-gcc (Debian 7.3.0-12) 7.3.0 20 debian:experimental-x-mipsel : Ok mipsel-linux-gnu-gcc (Debian 7.3.0-12) 7.3.0 21 fedora:20 : Ok gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7) 22 fedora:21 : Ok gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6) 23 fedora:22 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) 24 fedora:23 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) 25 fedora:24 : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1) 26 fedora:24-x-ARC-uClibc : Ok arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710 27 fedora:25 : Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1) 28 fedora:26 : Ok gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2) 29 fedora:27 : Ok gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5) 30 fedora:28 : Ok gcc (GCC) 8.0.1 20180324 (Red Hat 8.0.1-0.20) 31 fedora:rawhide : Ok gcc (GCC) 8.0.1 20180222 (Red Hat 8.0.1-0.16) 32 gentoo-stage3-amd64:latest : Ok gcc (Gentoo 6.4.0-r1 p1.3) 6.4.0 33 mageia:5 : Ok gcc (GCC) 4.9.2 34 mageia:6 : Ok gcc (Mageia 5.5.0-1.mga6) 5.5.0 35 opensuse:42.1 : Ok gcc (SUSE Linux) 4.8.5 36 opensuse:42.2 : Ok gcc (SUSE Linux) 4.8.5 37 opensuse:42.3 : Ok gcc (SUSE Linux) 4.8.5 38 opensuse:tumbleweed : Ok gcc (SUSE Linux) 7.3.0 39 oraclelinux:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) 40 oraclelinux:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16.0.3) 41 ubuntu:12.04.5 : Ok gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 42 ubuntu:14.04.4 : Ok gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 43 ubuntu:14.04.4-x-linaro-arm64 : Ok aarch64-linux-gnu-gcc (Linaro GCC 5.4-2017.05) 5.4.1 20170404 44 ubuntu:15.04 : Ok gcc (Ubuntu 4.9.2-10ubuntu13) 4.9.2 45 ubuntu:16.04 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 46 ubuntu:16.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 47 ubuntu:16.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 48 ubuntu:16.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 49 ubuntu:16.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 50 ubuntu:16.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 51 ubuntu:16.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 52 ubuntu:16.10 : Ok gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005 53 ubuntu:17.04 : Ok gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406 53 ubuntu:17.10 : Ok gcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0 54 ubuntu:18.04 : Ok gcc (Ubuntu 7.2.0-16ubuntu1) 7.2.0 # uname -a Linux jouet 4.16.0-rc7 #3 SMP Mon Mar 26 14:35:30 -03 2018 x86_64 x86_64 x86_64 GNU/Linux # perf test 1: vmlinux symtab matches kallsyms : Ok 2: Detect openat syscall event : Ok 3: Detect openat syscall event on all cpus : Ok 4: Read samples using the mmap interface : Ok 5: Test data source output : Ok 6: Parse event definition strings : Ok 7: Simple expression parser : Ok 8: PERF_RECORD_* events & perf_sample fields : Ok 9: Parse perf pmu format : Ok 10: DSO data read : Ok 11: DSO data cache : Ok 12: DSO data reopen : Ok 13: Roundtrip evsel->name : Ok 14: Parse sched tracepoints fields : Ok 15: syscalls:sys_enter_openat event fields : Ok 16: Setup struct perf_event_attr : Ok 17: Match and link multiple hists : Ok 18: 'import perf' in python : Ok 19: Breakpoint overflow signal handler : Ok 20: Breakpoint overflow sampling : Ok 21: Breakpoint accounting : Skip 22: Number of exit events of a simple workload : Ok 23: Software clock events period values : Ok 24: Object code reading : Ok 25: Sample parsing : Ok 26: Use a dummy software event to keep tracking : Ok 27: Parse with no sample_id_all bit set : Ok 28: Filter hist entries : Ok 29: Lookup mmap thread : Ok 30: Share thread mg : Ok 31: Sort output of hist entries : Ok 32: Cumulate child hist entries : Ok 33: Track with sched_switch : Ok 34: Filter fds with revents mask in a fdarray : Ok 35: Add fd to a fdarray, making it autogrow : Ok 36: kmod_path__parse : Ok 37: Thread map : Ok 38: LLVM search and compile : 38.1: Basic BPF llvm compile : Ok 38.2: kbuild searching : Ok 38.3: Compile source for BPF prologue generation : Ok 38.4: Compile source for BPF relocation : Ok 39: Session topology : Ok 40: BPF filter : 40.1: Basic BPF filtering : Ok 40.2: BPF pinning : Ok 40.3: BPF prologue generation : Ok 40.4: BPF relocation checker : Ok 41: Synthesize thread map : Ok 42: Remove thread map : Ok 43: Synthesize cpu map : Ok 44: Synthesize stat config : Ok 45: Synthesize stat : Ok 46: Synthesize stat round : Ok 47: Synthesize attr update : Ok 48: Event times : Ok 49: Read backward ring buffer : Ok 50: Print cpu map : Ok 51: Probe SDT events : Ok 52: is_printable_array : Ok 53: Print bitmap : Ok 54: perf hooks : Ok 55: builtin clang support : Skip (not compiled in) 56: unit_number__scnprintf : Ok 57: mem2node : Ok 58: x86 rdpmc : Ok 59: Convert perf time to TSC : Ok 60: DWARF unwind : Ok 61: x86 instruction decoder - new instructions : Ok 62: Use vfs_getname probe to get syscall args filenames : Ok 63: probe libc's inet_pton & backtrace it with ping : Ok 64: Check open filename arg using perf trace + vfs_getname: Ok 65: probe libc's inet_pton & backtrace it with ping : Ok 66: Add vfs_getname probe to get syscall args filenames : Ok # $ make -C tools/perf build-test make: Entering directory '/home/acme/git/perf/tools/perf' - tarpkg: ./tests/perf-targz-src-pkg . make_install_O: make install make_install_bin_O: make install-bin make_pure_O: make make_clean_all_O: make clean all make_help_O: make help make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1 make_no_slang_O: make NO_SLANG=1 make_no_auxtrace_O: make NO_AUXTRACE=1 make_no_libpython_O: make NO_LIBPYTHON=1 make_no_libbionic_O: make NO_LIBBIONIC=1 make_no_libbpf_O: make NO_LIBBPF=1 make_no_backtrace_O: make NO_BACKTRACE=1 make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 make_no_libnuma_O: make NO_LIBNUMA=1 make_no_libperl_O: make NO_LIBPERL=1 make_util_pmu_bison_o_O: make util/pmu-bison.o make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1 make_static_O: make LDFLAGS=-static make_doc_O: make doc make_no_libaudit_O: make NO_LIBAUDIT=1 make_no_libelf_O: make NO_LIBELF=1 make_tags_O: make tags make_no_demangle_O: make NO_DEMANGLE=1 make_no_libunwind_O: make NO_LIBUNWIND=1 make_no_newt_O: make NO_NEWT=1 make_with_babeltrace_O: make LIBBABELTRACE=1 make_util_map_o_O: make util/map.o make_debug_O: make DEBUG=1 make_with_clangllvm_O: make LIBCLANGLLVM=1 make_perf_o_O: make perf.o make_install_prefix_slash_O: make install prefix=/tmp/krava/ make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1 make_no_gtk2_O: make NO_GTK2=1 make_install_prefix_O: make install prefix=/tmp/krava OK make: Leaving directory '/home/acme/git/perf/tools/perf' $ ^ permalink raw reply [flat|nested] 32+ messages in thread
* [GIT PULL 00/17] perf/core improvements and fixes @ 2018-04-04 2:21 ` Arnaldo Carvalho de Melo 0 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2018-04-04 2:21 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Shishkin, Andi Kleen, Changbin Du, David Ahern, Jin Yao, Jiri Olsa, Kan Liang, Kim Phillips, Kirill A . Shutemov, Linus Torvalds, Martin Liška, Maxim Kuvyrkov, Milian Wolff, Namhyung Kim, Peter Zijlstra Hi Ingo, Please consider pulling, - Arnaldo Test results at the end of this message, as usual. The following changes since commit 1159e09476536250c2a0173d4298d15114df7a89: perf/x86/intel: Enable C-state residency events for Cannon Lake (2018-03-31 11:28:36 +0200) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.17-20180403 for you to fetch changes up to 51125a29a395048fdb3429b8c4ca0ada57097744: perf trace: Remove redundant ')' (2018-04-03 16:16:41 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: - Show only failing syscalls with 'perf trace --failure' (Arnaldo Carvalho de Melo) e.g: See what 'openat' syscalls are failing: # perf trace --failure -e openat 762.323 ( 0.007 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video2) = -1 ENOENT No such file or directory <SNIP N /dev/videoN open attempts... sigh, where is that improvised camera lid?!? 8-) > 790.228 ( 0.008 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video63) = -1 ENOENT No such file or directory ^C# - Show information about the event (freq, nr_samples, total period/nr_events) in the annotate --tui and --stdio2 'perf annotate' output, similar to the first line in the 'perf report --tui', but just for the samples for the annotated symbol (Arnaldo Carvalho de Melo) - Introduce 'perf version --build-options' to show what features were linked, aliased as well as a shorter 'perf -vv' (Jin Yao) - Add a "dso_size" sort order (Kim Phillips) - Remove redundant ')' in the tracepoint output in 'perf trace' (Changbin Du) - Synchronize x86's cpufeatures.h, no effect on tools (Arnaldo Carvalho de Melo) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (9): tools headers: Synchronize x86's cpufeatures.h perf trace: Show only failing syscalls perf hists browser: Rename perf_evsel_browser_title to a more descriptive name perf hists: Introduce hists__scnprint_title() perf hists: Move hists__scnprintf_title() away from the TUI code perf ui browser: Move the extra title lines from the hists browser perf annotate: Introduce annotation__scnprintf_samples_period() method perf annotate browser: Show extra title line with event information perf annotate stdio2: Print more descriptive event information header Changbin Du (1): perf trace: Remove redundant ')' Jin Yao (5): perf config: Add some new -DHAVE_XXX to CFLAGS perf config: Rename to HAVE_DWARF_GETLOCATIONS_SUPPORT perf version: Print the compiled-in status of libraries perf tools: Add 'perf -vv' as an alias to 'perf version --build-options' perf version: Add man page Jiri Olsa (1): tools include: Add config.h header file Kim Phillips (1): perf tools: Add a "dso_size" sort order tools/arch/x86/include/asm/cpufeatures.h | 2 + tools/include/tools/config.h | 34 ++++++++ tools/perf/Documentation/perf-report.txt | 1 + tools/perf/Documentation/perf-trace.txt | 3 + tools/perf/Documentation/perf-version.txt | 24 ++++++ tools/perf/Makefile.config | 8 +- tools/perf/builtin-trace.c | 11 ++- tools/perf/builtin-version.c | 82 +++++++++++++++++++- tools/perf/perf.c | 6 ++ tools/perf/perf.h | 1 + tools/perf/ui/browser.c | 8 +- tools/perf/ui/browser.h | 2 + tools/perf/ui/browsers/annotate.c | 31 +++++++- tools/perf/ui/browsers/hists.c | 125 +++++++----------------------- tools/perf/util/annotate.c | 48 ++++++++++-- tools/perf/util/annotate.h | 12 +++ tools/perf/util/dwarf-aux.c | 2 +- tools/perf/util/hist.c | 81 +++++++++++++++++++ tools/perf/util/hist.h | 7 ++ tools/perf/util/map.h | 4 + tools/perf/util/sort.c | 41 ++++++++++ tools/perf/util/sort.h | 1 + 22 files changed, 418 insertions(+), 116 deletions(-) create mode 100644 tools/include/tools/config.h create mode 100644 tools/perf/Documentation/perf-version.txt Test results: The first ones are container (docker) based builds of tools/perf with and without libelf support. Where clang is available, it is also used to build perf with/without libelf. The objtool and samples/bpf/ builds are disabled now that I'm switching from using the sources in a local volume to fetching them from a http server to build it inside the container, to make it easier to build in a container cluster. Those will come back later. Several are cross builds, the ones with -x-ARCH and the android one, and those may not have all the features built, due to lack of multi-arch devel packages, available and being used so far on just a few, like debian:experimental-x-{arm64,mipsel}. The 'perf test' one will perform a variety of tests exercising tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands with a variety of command line event specifications to then intercept the sys_perf_event syscall to check that the perf_event_attr fields are set up as expected, among a variety of other unit tests. Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/ with a variety of feature sets, exercising the build with an incomplete set of features as well as with a complete one. It is planned to have it run on each of the containers mentioned above, using some container orchestration infrastructure. Get in contact if interested in helping having this in place. # dm 1 alpine:3.4 : Ok gcc (Alpine 5.3.0) 5.3.0 2 alpine:3.5 : Ok gcc (Alpine 6.2.1) 6.2.1 20160822 3 alpine:3.6 : Ok gcc (Alpine 6.3.0) 6.3.0 4 alpine:3.7 : Ok gcc (Alpine 6.4.0) 6.4.0 5 alpine:edge : Ok gcc (Alpine 6.4.0) 6.4.0 6 amazonlinux:1 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11) 7 amazonlinux:2 : Ok gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2) 8 android-ndk:r12b-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 9 android-ndk:r15c-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 10 centos:5 : Ok gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55) 11 centos:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) 12 centos:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) 13 debian:7 : Ok gcc (Debian 4.7.2-5) 4.7.2 14 debian:8 : Ok gcc (Debian 4.9.2-10+deb8u1) 4.9.2 15 debian:9 : Ok gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516 16 debian:experimental : Ok gcc (Debian 7.3.0-14) 7.3.0 17 debian:experimental-x-arm64 : Ok aarch64-linux-gnu-gcc (Debian 7.3.0-12) 7.3.0 18 debian:experimental-x-mips : Ok mips-linux-gnu-gcc (Debian 7.3.0-12) 7.3.0 19 debian:experimental-x-mips64 : Ok mips64-linux-gnuabi64-gcc (Debian 7.3.0-12) 7.3.0 20 debian:experimental-x-mipsel : Ok mipsel-linux-gnu-gcc (Debian 7.3.0-12) 7.3.0 21 fedora:20 : Ok gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7) 22 fedora:21 : Ok gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6) 23 fedora:22 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) 24 fedora:23 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) 25 fedora:24 : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1) 26 fedora:24-x-ARC-uClibc : Ok arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710 27 fedora:25 : Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1) 28 fedora:26 : Ok gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2) 29 fedora:27 : Ok gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5) 30 fedora:28 : Ok gcc (GCC) 8.0.1 20180324 (Red Hat 8.0.1-0.20) 31 fedora:rawhide : Ok gcc (GCC) 8.0.1 20180222 (Red Hat 8.0.1-0.16) 32 gentoo-stage3-amd64:latest : Ok gcc (Gentoo 6.4.0-r1 p1.3) 6.4.0 33 mageia:5 : Ok gcc (GCC) 4.9.2 34 mageia:6 : Ok gcc (Mageia 5.5.0-1.mga6) 5.5.0 35 opensuse:42.1 : Ok gcc (SUSE Linux) 4.8.5 36 opensuse:42.2 : Ok gcc (SUSE Linux) 4.8.5 37 opensuse:42.3 : Ok gcc (SUSE Linux) 4.8.5 38 opensuse:tumbleweed : Ok gcc (SUSE Linux) 7.3.0 39 oraclelinux:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) 40 oraclelinux:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16.0.3) 41 ubuntu:12.04.5 : Ok gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 42 ubuntu:14.04.4 : Ok gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 43 ubuntu:14.04.4-x-linaro-arm64 : Ok aarch64-linux-gnu-gcc (Linaro GCC 5.4-2017.05) 5.4.1 20170404 44 ubuntu:15.04 : Ok gcc (Ubuntu 4.9.2-10ubuntu13) 4.9.2 45 ubuntu:16.04 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 46 ubuntu:16.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 47 ubuntu:16.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 48 ubuntu:16.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 49 ubuntu:16.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 50 ubuntu:16.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 51 ubuntu:16.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 52 ubuntu:16.10 : Ok gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005 53 ubuntu:17.04 : Ok gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406 53 ubuntu:17.10 : Ok gcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0 54 ubuntu:18.04 : Ok gcc (Ubuntu 7.2.0-16ubuntu1) 7.2.0 # uname -a Linux jouet 4.16.0-rc7 #3 SMP Mon Mar 26 14:35:30 -03 2018 x86_64 x86_64 x86_64 GNU/Linux # perf test 1: vmlinux symtab matches kallsyms : Ok 2: Detect openat syscall event : Ok 3: Detect openat syscall event on all cpus : Ok 4: Read samples using the mmap interface : Ok 5: Test data source output : Ok 6: Parse event definition strings : Ok 7: Simple expression parser : Ok 8: PERF_RECORD_* events & perf_sample fields : Ok 9: Parse perf pmu format : Ok 10: DSO data read : Ok 11: DSO data cache : Ok 12: DSO data reopen : Ok 13: Roundtrip evsel->name : Ok 14: Parse sched tracepoints fields : Ok 15: syscalls:sys_enter_openat event fields : Ok 16: Setup struct perf_event_attr : Ok 17: Match and link multiple hists : Ok 18: 'import perf' in python : Ok 19: Breakpoint overflow signal handler : Ok 20: Breakpoint overflow sampling : Ok 21: Breakpoint accounting : Skip 22: Number of exit events of a simple workload : Ok 23: Software clock events period values : Ok 24: Object code reading : Ok 25: Sample parsing : Ok 26: Use a dummy software event to keep tracking : Ok 27: Parse with no sample_id_all bit set : Ok 28: Filter hist entries : Ok 29: Lookup mmap thread : Ok 30: Share thread mg : Ok 31: Sort output of hist entries : Ok 32: Cumulate child hist entries : Ok 33: Track with sched_switch : Ok 34: Filter fds with revents mask in a fdarray : Ok 35: Add fd to a fdarray, making it autogrow : Ok 36: kmod_path__parse : Ok 37: Thread map : Ok 38: LLVM search and compile : 38.1: Basic BPF llvm compile : Ok 38.2: kbuild searching : Ok 38.3: Compile source for BPF prologue generation : Ok 38.4: Compile source for BPF relocation : Ok 39: Session topology : Ok 40: BPF filter : 40.1: Basic BPF filtering : Ok 40.2: BPF pinning : Ok 40.3: BPF prologue generation : Ok 40.4: BPF relocation checker : Ok 41: Synthesize thread map : Ok 42: Remove thread map : Ok 43: Synthesize cpu map : Ok 44: Synthesize stat config : Ok 45: Synthesize stat : Ok 46: Synthesize stat round : Ok 47: Synthesize attr update : Ok 48: Event times : Ok 49: Read backward ring buffer : Ok 50: Print cpu map : Ok 51: Probe SDT events : Ok 52: is_printable_array : Ok 53: Print bitmap : Ok 54: perf hooks : Ok 55: builtin clang support : Skip (not compiled in) 56: unit_number__scnprintf : Ok 57: mem2node : Ok 58: x86 rdpmc : Ok 59: Convert perf time to TSC : Ok 60: DWARF unwind : Ok 61: x86 instruction decoder - new instructions : Ok 62: Use vfs_getname probe to get syscall args filenames : Ok 63: probe libc's inet_pton & backtrace it with ping : Ok 64: Check open filename arg using perf trace + vfs_getname: Ok 65: probe libc's inet_pton & backtrace it with ping : Ok 66: Add vfs_getname probe to get syscall args filenames : Ok # $ make -C tools/perf build-test make: Entering directory '/home/acme/git/perf/tools/perf' - tarpkg: ./tests/perf-targz-src-pkg . make_install_O: make install make_install_bin_O: make install-bin make_pure_O: make make_clean_all_O: make clean all make_help_O: make help make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1 make_no_slang_O: make NO_SLANG=1 make_no_auxtrace_O: make NO_AUXTRACE=1 make_no_libpython_O: make NO_LIBPYTHON=1 make_no_libbionic_O: make NO_LIBBIONIC=1 make_no_libbpf_O: make NO_LIBBPF=1 make_no_backtrace_O: make NO_BACKTRACE=1 make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 make_no_libnuma_O: make NO_LIBNUMA=1 make_no_libperl_O: make NO_LIBPERL=1 make_util_pmu_bison_o_O: make util/pmu-bison.o make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1 make_static_O: make LDFLAGS=-static make_doc_O: make doc make_no_libaudit_O: make NO_LIBAUDIT=1 make_no_libelf_O: make NO_LIBELF=1 make_tags_O: make tags make_no_demangle_O: make NO_DEMANGLE=1 make_no_libunwind_O: make NO_LIBUNWIND=1 make_no_newt_O: make NO_NEWT=1 make_with_babeltrace_O: make LIBBABELTRACE=1 make_util_map_o_O: make util/map.o make_debug_O: make DEBUG=1 make_with_clangllvm_O: make LIBCLANGLLVM=1 make_perf_o_O: make perf.o make_install_prefix_slash_O: make install prefix=/tmp/krava/ make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1 make_no_gtk2_O: make NO_GTK2=1 make_install_prefix_O: make install prefix=/tmp/krava OK make: Leaving directory '/home/acme/git/perf/tools/perf' $ ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [GIT PULL 00/17] perf/core improvements and fixes 2018-04-04 2:21 ` Arnaldo Carvalho de Melo @ 2018-04-04 5:25 ` Ingo Molnar -1 siblings, 0 replies; 32+ messages in thread From: Ingo Molnar @ 2018-04-04 5:25 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, linux-perf-users, Adrian Hunter, Alexander Shishkin, Andi Kleen, Changbin Du, David Ahern, Jin Yao, Jiri Olsa, Kan Liang, Kim Phillips, Kirill A . Shutemov, Linus Torvalds, Martin Liška, Maxim Kuvyrkov, Milian Wolff, Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > Test results at the end of this message, as usual. > > The following changes since commit 1159e09476536250c2a0173d4298d15114df7a89: > > perf/x86/intel: Enable C-state residency events for Cannon Lake (2018-03-31 11:28:36 +0200) > > are available in the Git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.17-20180403 > > for you to fetch changes up to 51125a29a395048fdb3429b8c4ca0ada57097744: > > perf trace: Remove redundant ')' (2018-04-03 16:16:41 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > - Show only failing syscalls with 'perf trace --failure' (Arnaldo Carvalho de Melo) > > e.g: See what 'openat' syscalls are failing: > > # perf trace --failure -e openat > 762.323 ( 0.007 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video2) = -1 ENOENT No such file or directory > <SNIP N /dev/videoN open attempts... sigh, where is that improvised camera lid?!? 8-) > > 790.228 ( 0.008 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video63) = -1 ENOENT No such file or directory > ^C# > > - Show information about the event (freq, nr_samples, total period/nr_events) in > the annotate --tui and --stdio2 'perf annotate' output, similar to the > first line in the 'perf report --tui', but just for the samples for > the annotated symbol (Arnaldo Carvalho de Melo) > > - Introduce 'perf version --build-options' to show what features were > linked, aliased as well as a shorter 'perf -vv' (Jin Yao) > > - Add a "dso_size" sort order (Kim Phillips) > > - Remove redundant ')' in the tracepoint output in 'perf trace' (Changbin Du) > > - Synchronize x86's cpufeatures.h, no effect on tools (Arnaldo Carvalho de Melo) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (9): > tools headers: Synchronize x86's cpufeatures.h > perf trace: Show only failing syscalls > perf hists browser: Rename perf_evsel_browser_title to a more descriptive name > perf hists: Introduce hists__scnprint_title() > perf hists: Move hists__scnprintf_title() away from the TUI code > perf ui browser: Move the extra title lines from the hists browser > perf annotate: Introduce annotation__scnprintf_samples_period() method > perf annotate browser: Show extra title line with event information > perf annotate stdio2: Print more descriptive event information header > > Changbin Du (1): > perf trace: Remove redundant ')' > > Jin Yao (5): > perf config: Add some new -DHAVE_XXX to CFLAGS > perf config: Rename to HAVE_DWARF_GETLOCATIONS_SUPPORT > perf version: Print the compiled-in status of libraries > perf tools: Add 'perf -vv' as an alias to 'perf version --build-options' > perf version: Add man page > > Jiri Olsa (1): > tools include: Add config.h header file > > Kim Phillips (1): > perf tools: Add a "dso_size" sort order > > tools/arch/x86/include/asm/cpufeatures.h | 2 + > tools/include/tools/config.h | 34 ++++++++ > tools/perf/Documentation/perf-report.txt | 1 + > tools/perf/Documentation/perf-trace.txt | 3 + > tools/perf/Documentation/perf-version.txt | 24 ++++++ > tools/perf/Makefile.config | 8 +- > tools/perf/builtin-trace.c | 11 ++- > tools/perf/builtin-version.c | 82 +++++++++++++++++++- > tools/perf/perf.c | 6 ++ > tools/perf/perf.h | 1 + > tools/perf/ui/browser.c | 8 +- > tools/perf/ui/browser.h | 2 + > tools/perf/ui/browsers/annotate.c | 31 +++++++- > tools/perf/ui/browsers/hists.c | 125 +++++++----------------------- > tools/perf/util/annotate.c | 48 ++++++++++-- > tools/perf/util/annotate.h | 12 +++ > tools/perf/util/dwarf-aux.c | 2 +- > tools/perf/util/hist.c | 81 +++++++++++++++++++ > tools/perf/util/hist.h | 7 ++ > tools/perf/util/map.h | 4 + > tools/perf/util/sort.c | 41 ++++++++++ > tools/perf/util/sort.h | 1 + > 22 files changed, 418 insertions(+), 116 deletions(-) > create mode 100644 tools/include/tools/config.h > create mode 100644 tools/perf/Documentation/perf-version.txt Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [GIT PULL 00/17] perf/core improvements and fixes @ 2018-04-04 5:25 ` Ingo Molnar 0 siblings, 0 replies; 32+ messages in thread From: Ingo Molnar @ 2018-04-04 5:25 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, linux-perf-users, Adrian Hunter, Alexander Shishkin, Andi Kleen, Changbin Du, David Ahern, Jin Yao, Jiri Olsa, Kan Liang, Kim Phillips, Kirill A . Shutemov, Linus Torvalds, Martin Liška, Maxim Kuvyrkov, Milian Wolff, Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > Test results at the end of this message, as usual. > > The following changes since commit 1159e09476536250c2a0173d4298d15114df7a89: > > perf/x86/intel: Enable C-state residency events for Cannon Lake (2018-03-31 11:28:36 +0200) > > are available in the Git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.17-20180403 > > for you to fetch changes up to 51125a29a395048fdb3429b8c4ca0ada57097744: > > perf trace: Remove redundant ')' (2018-04-03 16:16:41 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > - Show only failing syscalls with 'perf trace --failure' (Arnaldo Carvalho de Melo) > > e.g: See what 'openat' syscalls are failing: > > # perf trace --failure -e openat > 762.323 ( 0.007 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video2) = -1 ENOENT No such file or directory > <SNIP N /dev/videoN open attempts... sigh, where is that improvised camera lid?!? 8-) > > 790.228 ( 0.008 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video63) = -1 ENOENT No such file or directory > ^C# > > - Show information about the event (freq, nr_samples, total period/nr_events) in > the annotate --tui and --stdio2 'perf annotate' output, similar to the > first line in the 'perf report --tui', but just for the samples for > the annotated symbol (Arnaldo Carvalho de Melo) > > - Introduce 'perf version --build-options' to show what features were > linked, aliased as well as a shorter 'perf -vv' (Jin Yao) > > - Add a "dso_size" sort order (Kim Phillips) > > - Remove redundant ')' in the tracepoint output in 'perf trace' (Changbin Du) > > - Synchronize x86's cpufeatures.h, no effect on tools (Arnaldo Carvalho de Melo) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (9): > tools headers: Synchronize x86's cpufeatures.h > perf trace: Show only failing syscalls > perf hists browser: Rename perf_evsel_browser_title to a more descriptive name > perf hists: Introduce hists__scnprint_title() > perf hists: Move hists__scnprintf_title() away from the TUI code > perf ui browser: Move the extra title lines from the hists browser > perf annotate: Introduce annotation__scnprintf_samples_period() method > perf annotate browser: Show extra title line with event information > perf annotate stdio2: Print more descriptive event information header > > Changbin Du (1): > perf trace: Remove redundant ')' > > Jin Yao (5): > perf config: Add some new -DHAVE_XXX to CFLAGS > perf config: Rename to HAVE_DWARF_GETLOCATIONS_SUPPORT > perf version: Print the compiled-in status of libraries > perf tools: Add 'perf -vv' as an alias to 'perf version --build-options' > perf version: Add man page > > Jiri Olsa (1): > tools include: Add config.h header file > > Kim Phillips (1): > perf tools: Add a "dso_size" sort order > > tools/arch/x86/include/asm/cpufeatures.h | 2 + > tools/include/tools/config.h | 34 ++++++++ > tools/perf/Documentation/perf-report.txt | 1 + > tools/perf/Documentation/perf-trace.txt | 3 + > tools/perf/Documentation/perf-version.txt | 24 ++++++ > tools/perf/Makefile.config | 8 +- > tools/perf/builtin-trace.c | 11 ++- > tools/perf/builtin-version.c | 82 +++++++++++++++++++- > tools/perf/perf.c | 6 ++ > tools/perf/perf.h | 1 + > tools/perf/ui/browser.c | 8 +- > tools/perf/ui/browser.h | 2 + > tools/perf/ui/browsers/annotate.c | 31 +++++++- > tools/perf/ui/browsers/hists.c | 125 +++++++----------------------- > tools/perf/util/annotate.c | 48 ++++++++++-- > tools/perf/util/annotate.h | 12 +++ > tools/perf/util/dwarf-aux.c | 2 +- > tools/perf/util/hist.c | 81 +++++++++++++++++++ > tools/perf/util/hist.h | 7 ++ > tools/perf/util/map.h | 4 + > tools/perf/util/sort.c | 41 ++++++++++ > tools/perf/util/sort.h | 1 + > 22 files changed, 418 insertions(+), 116 deletions(-) > create mode 100644 tools/include/tools/config.h > create mode 100644 tools/perf/Documentation/perf-version.txt Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 32+ messages in thread
* [GIT PULL 00/17] perf/core improvements and fixes @ 2016-08-04 0:49 Arnaldo Carvalho de Melo 2016-08-04 9:04 ` Ingo Molnar 0 siblings, 1 reply; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-08-04 0:49 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Alexei Starovoitov, Corey Ashford, David Ahern, Frederic Weisbecker, Jan Stancek, Jiri Olsa, Namhyung Kim, Paul Mackerras, Peter Zijlstra, Steven Rostedt, Wang Nan, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit 674d2d69b14f677a771ceec4b48bfade94a0c5f1: Merge tag 'perf-core-for-mingo-20160725' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-07-25 19:48:41 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160803 for you to fetch changes up to c369e0a1a8fa6ca80e6c37c8735d9427b623ae62: perf tests bpf: Use SyS_epoll_wait alias (2016-08-03 19:40:48 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: New features: - Add --sample-cpu to 'perf record', to explicitely ask for sampling the CPU (Jiri Olsa) Fixes: - Fix processing of multi byte chunks in objdump output, fixing disassemble processing for annotation on at least ARM64 (Jan Stancek) - Use SyS_epoll_wait in a BPF 'perf test' entry instead of sys_epoll_wait, that is not present in the DWARF info in vmlinux files (Arnaldo Carvalho de Melo) - Add -wno-shadow when processing files using perl headers, fixing the build on Fedora Rawhide and Arch Linux (Namhyung Kim) Infrastructure: - Annotate prep work to better catch and report errors related to using objdump to disassemble DSOs (Arnaldo Carvalho de Melo) - Add 'alloc', 'scnprintf' and 'and' methods for bitmap processing (Jiri Olsa) - Add nested output resorting callback in hists processing (Jiri Olsa) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (7): perf evsel: Introduce constructor for cycles event perf annotate: Use pipe + fork instead of popen perf target: str_error_r() always returns the buffer it receives perf annotate: Rename symbol__annotate() to symbol__disassemble() perf annotate: Introduce strerror for handling symbol__disassemble() errors perf annotate: Plug filename string leak perf tests bpf: Use SyS_epoll_wait alias Jan Stancek (1): perf tests: objdump output can contain multi byte chunks Jiri Olsa (7): tools lib: Add bitmap_alloc function tools lib: Add bitmap_scnprintf function tools lib: Add bitmap_and function perf tests: Add test for bitmap_scnprintf function perf tools: Move config/Makefile into Makefile.config perf hists: Introduce output_resort_cb method perf record: Add --sample-cpu option Namhyung Kim (2): perf tools: Fix build failure on perl script context tools lib traceevent: Ignore generated library files tools/include/linux/bitmap.h | 37 ++++++++ tools/lib/bitmap.c | 44 +++++++++ tools/lib/traceevent/.gitignore | 1 + tools/perf/Documentation/perf-record.txt | 3 + tools/perf/{config/Makefile => Makefile.config} | 0 tools/perf/Makefile.perf | 6 +- tools/perf/builtin-record.c | 1 + tools/perf/builtin-top.c | 6 +- tools/perf/perf.h | 1 + tools/perf/scripts/perl/Perf-Trace-Util/Build | 4 +- tools/perf/tests/Build | 1 + tools/perf/tests/bitmap.c | 53 +++++++++++ tools/perf/tests/bpf-script-example.c | 4 +- tools/perf/tests/builtin-test.c | 4 + tools/perf/tests/code-reading.c | 100 ++++++++++++++------ tools/perf/tests/tests.h | 1 + tools/perf/ui/browsers/annotate.c | 9 +- tools/perf/ui/gtk/annotate.c | 8 +- tools/perf/util/annotate.c | 116 +++++++++++++++++------- tools/perf/util/annotate.h | 22 ++++- tools/perf/util/evlist.c | 22 +---- tools/perf/util/evsel.c | 30 +++++- tools/perf/util/evsel.h | 2 + tools/perf/util/hist.c | 15 ++- tools/perf/util/hist.h | 4 + tools/perf/util/target.c | 6 +- 26 files changed, 394 insertions(+), 106 deletions(-) rename tools/perf/{config/Makefile => Makefile.config} (100%) create mode 100644 tools/perf/tests/bitmap.c ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [GIT PULL 00/17] perf/core improvements and fixes 2016-08-04 0:49 Arnaldo Carvalho de Melo @ 2016-08-04 9:04 ` Ingo Molnar 0 siblings, 0 replies; 32+ messages in thread From: Ingo Molnar @ 2016-08-04 9:04 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Alexei Starovoitov, Corey Ashford, David Ahern, Frederic Weisbecker, Jan Stancek, Jiri Olsa, Namhyung Kim, Paul Mackerras, Peter Zijlstra, Steven Rostedt, Wang Nan, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > The following changes since commit 674d2d69b14f677a771ceec4b48bfade94a0c5f1: > > Merge tag 'perf-core-for-mingo-20160725' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-07-25 19:48:41 +0200) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160803 > > for you to fetch changes up to c369e0a1a8fa6ca80e6c37c8735d9427b623ae62: > > perf tests bpf: Use SyS_epoll_wait alias (2016-08-03 19:40:48 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > New features: > > - Add --sample-cpu to 'perf record', to explicitely ask for sampling > the CPU (Jiri Olsa) > > Fixes: > > - Fix processing of multi byte chunks in objdump output, fixing > disassemble processing for annotation on at least ARM64 (Jan Stancek) > > - Use SyS_epoll_wait in a BPF 'perf test' entry instead of sys_epoll_wait, that > is not present in the DWARF info in vmlinux files (Arnaldo Carvalho de Melo) > > - Add -wno-shadow when processing files using perl headers, fixing > the build on Fedora Rawhide and Arch Linux (Namhyung Kim) > > Infrastructure: > > - Annotate prep work to better catch and report errors related to > using objdump to disassemble DSOs (Arnaldo Carvalho de Melo) > > - Add 'alloc', 'scnprintf' and 'and' methods for bitmap processing (Jiri Olsa) > > - Add nested output resorting callback in hists processing (Jiri Olsa) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (7): > perf evsel: Introduce constructor for cycles event > perf annotate: Use pipe + fork instead of popen > perf target: str_error_r() always returns the buffer it receives > perf annotate: Rename symbol__annotate() to symbol__disassemble() > perf annotate: Introduce strerror for handling symbol__disassemble() errors > perf annotate: Plug filename string leak > perf tests bpf: Use SyS_epoll_wait alias > > Jan Stancek (1): > perf tests: objdump output can contain multi byte chunks > > Jiri Olsa (7): > tools lib: Add bitmap_alloc function > tools lib: Add bitmap_scnprintf function > tools lib: Add bitmap_and function > perf tests: Add test for bitmap_scnprintf function > perf tools: Move config/Makefile into Makefile.config > perf hists: Introduce output_resort_cb method > perf record: Add --sample-cpu option > > Namhyung Kim (2): > perf tools: Fix build failure on perl script context > tools lib traceevent: Ignore generated library files > > tools/include/linux/bitmap.h | 37 ++++++++ > tools/lib/bitmap.c | 44 +++++++++ > tools/lib/traceevent/.gitignore | 1 + > tools/perf/Documentation/perf-record.txt | 3 + > tools/perf/{config/Makefile => Makefile.config} | 0 > tools/perf/Makefile.perf | 6 +- > tools/perf/builtin-record.c | 1 + > tools/perf/builtin-top.c | 6 +- > tools/perf/perf.h | 1 + > tools/perf/scripts/perl/Perf-Trace-Util/Build | 4 +- > tools/perf/tests/Build | 1 + > tools/perf/tests/bitmap.c | 53 +++++++++++ > tools/perf/tests/bpf-script-example.c | 4 +- > tools/perf/tests/builtin-test.c | 4 + > tools/perf/tests/code-reading.c | 100 ++++++++++++++------ > tools/perf/tests/tests.h | 1 + > tools/perf/ui/browsers/annotate.c | 9 +- > tools/perf/ui/gtk/annotate.c | 8 +- > tools/perf/util/annotate.c | 116 +++++++++++++++++------- > tools/perf/util/annotate.h | 22 ++++- > tools/perf/util/evlist.c | 22 +---- > tools/perf/util/evsel.c | 30 +++++- > tools/perf/util/evsel.h | 2 + > tools/perf/util/hist.c | 15 ++- > tools/perf/util/hist.h | 4 + > tools/perf/util/target.c | 6 +- > 26 files changed, 394 insertions(+), 106 deletions(-) > rename tools/perf/{config/Makefile => Makefile.config} (100%) > create mode 100644 tools/perf/tests/bitmap.c Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 32+ messages in thread
* [GIT PULL 00/17] perf/core improvements and fixes @ 2015-05-14 22:37 Arnaldo Carvalho de Melo 2015-05-15 6:39 ` Ingo Molnar 0 siblings, 1 reply; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2015-05-14 22:37 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Borislav Petkov, David Ahern, Don Zickus, Frederic Weisbecker, He Kuang, Jiri Olsa, Masami Hiramatsu, Namhyung Kim, Naveen N . Rao, Peter Zijlstra, Stephane Eranian, Steven Rostedt, Taeung Song, Vinson Lee, Wang Nan, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit a41f3c8cd4e28dcbebd8ec27a9602c86cfa5f009: perf/x86/intel/uncore: Add Broadwell-U uncore IMC PMU support (2015-05-11 11:57:47 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo for you to fetch changes up to 70923bd26c732ac2d9e248d80214df6dfd75f78c: perf tools: Make flex/bison calls honour V=1 (2015-05-14 19:27:47 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: User visible: - Add --range option to show a variable's location range in 'perf probe', helping in collecting variables in probes when there is a mismatch between assembly and source code (He Kuang) - Show better error message when failed to find variable in 'perf probe' (He Kuang) - Fix 'perf report --thread' handling and document it better (Namhyung Kim) Infrastructure: - Fix to get negative exit codes in 'perf test' test routines (He Kuang) - Make flex/bison calls honour V=1 (Jiri Olsa) - Ignore tail calls to probed functions in 'perf probe' (Naveen N. Rao) - Fix refcount expectations in map_group share 'perf test' (Arnaldo Carvalho de Melo) Build Fixes: - Fix 'perf kmem' build due to compiler thinking uninitialized var is being accessed (Arnaldo Carvalho de Melo) - Provide le16toh if not defined, to fix the libtraceevent build on older distros (Arnaldo Carvalho de Melo) - Fix 'perf trace' build on older distros by providing some CLOEXEC, NONBLOCK defines (Arnaldo Carvalho de Melo) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (6): perf kmem: Fix compiler warning about may be accessing uninitialized variable perf tests: Show refcounting broken expectations in thread-mg-share test perf machine: No need to keep a refcnt for last_match perf tests: Fix map_groups refcount test tools lib traceevent: Provide le16toh define for older systems perf trace: Fix the build on older distros He Kuang (5): perf trace: Removed duplicated NULL test perf probe: Remove length limitation for showing available variables perf probe: Add --range option to show a variable's location range perf probe: Show better error message when failed to find variable perf tests: Fix to get negative exit codes Jiri Olsa (1): perf tools: Make flex/bison calls honour V=1 Namhyung Kim (4): perf tools: Document relation of per-thread event count feature perf report: Force tty output if -T/--thread option is given perf report: Do not restrict -T option by other options perf report: Fix some option handling on --stdio Naveen N. Rao (1): perf probe: Ignore tail calls to probed functions tools/lib/traceevent/plugin_cfg80211.c | 13 ++ tools/perf/Documentation/perf-record.txt | 3 +- tools/perf/Documentation/perf-report.txt | 3 +- tools/perf/builtin-kmem.c | 2 +- tools/perf/builtin-probe.c | 2 + tools/perf/builtin-report.c | 17 ++- tools/perf/builtin-trace.c | 32 ++++- tools/perf/tests/builtin-test.c | 2 +- tools/perf/tests/tests.h | 9 ++ tools/perf/tests/thread-mg-share.c | 29 +++-- tools/perf/util/Build | 8 +- tools/perf/util/cache.h | 1 - tools/perf/util/dwarf-aux.c | 204 +++++++++++++++++++++++++++---- tools/perf/util/dwarf-aux.h | 10 +- tools/perf/util/environment.c | 1 - tools/perf/util/machine.c | 8 +- tools/perf/util/pager.c | 5 - tools/perf/util/probe-event.h | 1 + tools/perf/util/probe-finder.c | 90 ++++++++++---- 19 files changed, 346 insertions(+), 94 deletions(-) ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [GIT PULL 00/17] perf/core improvements and fixes 2015-05-14 22:37 Arnaldo Carvalho de Melo @ 2015-05-15 6:39 ` Ingo Molnar 0 siblings, 0 replies; 32+ messages in thread From: Ingo Molnar @ 2015-05-15 6:39 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Borislav Petkov, David Ahern, Don Zickus, Frederic Weisbecker, He Kuang, Jiri Olsa, Masami Hiramatsu, Namhyung Kim, Naveen N . Rao, Peter Zijlstra, Stephane Eranian, Steven Rostedt, Taeung Song, Vinson Lee, Wang Nan, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > The following changes since commit a41f3c8cd4e28dcbebd8ec27a9602c86cfa5f009: > > perf/x86/intel/uncore: Add Broadwell-U uncore IMC PMU support (2015-05-11 11:57:47 +0200) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo > > for you to fetch changes up to 70923bd26c732ac2d9e248d80214df6dfd75f78c: > > perf tools: Make flex/bison calls honour V=1 (2015-05-14 19:27:47 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > User visible: > > - Add --range option to show a variable's location range in 'perf probe', > helping in collecting variables in probes when there is a mismatch > between assembly and source code (He Kuang) > > - Show better error message when failed to find variable in 'perf probe' (He Kuang) > > - Fix 'perf report --thread' handling and document it better (Namhyung Kim) > > Infrastructure: > > - Fix to get negative exit codes in 'perf test' test routines (He Kuang) > > - Make flex/bison calls honour V=1 (Jiri Olsa) > > - Ignore tail calls to probed functions in 'perf probe' (Naveen N. Rao) > > - Fix refcount expectations in map_group share 'perf test' (Arnaldo Carvalho de Melo) > > Build Fixes: > > - Fix 'perf kmem' build due to compiler thinking uninitialized var is > being accessed (Arnaldo Carvalho de Melo) > > - Provide le16toh if not defined, to fix the libtraceevent build on > older distros (Arnaldo Carvalho de Melo) > > - Fix 'perf trace' build on older distros by providing some CLOEXEC, NONBLOCK > defines (Arnaldo Carvalho de Melo) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (6): > perf kmem: Fix compiler warning about may be accessing uninitialized variable > perf tests: Show refcounting broken expectations in thread-mg-share test > perf machine: No need to keep a refcnt for last_match > perf tests: Fix map_groups refcount test > tools lib traceevent: Provide le16toh define for older systems > perf trace: Fix the build on older distros > > He Kuang (5): > perf trace: Removed duplicated NULL test > perf probe: Remove length limitation for showing available variables > perf probe: Add --range option to show a variable's location range > perf probe: Show better error message when failed to find variable > perf tests: Fix to get negative exit codes > > Jiri Olsa (1): > perf tools: Make flex/bison calls honour V=1 > > Namhyung Kim (4): > perf tools: Document relation of per-thread event count feature > perf report: Force tty output if -T/--thread option is given > perf report: Do not restrict -T option by other options > perf report: Fix some option handling on --stdio > > Naveen N. Rao (1): > perf probe: Ignore tail calls to probed functions > > tools/lib/traceevent/plugin_cfg80211.c | 13 ++ > tools/perf/Documentation/perf-record.txt | 3 +- > tools/perf/Documentation/perf-report.txt | 3 +- > tools/perf/builtin-kmem.c | 2 +- > tools/perf/builtin-probe.c | 2 + > tools/perf/builtin-report.c | 17 ++- > tools/perf/builtin-trace.c | 32 ++++- > tools/perf/tests/builtin-test.c | 2 +- > tools/perf/tests/tests.h | 9 ++ > tools/perf/tests/thread-mg-share.c | 29 +++-- > tools/perf/util/Build | 8 +- > tools/perf/util/cache.h | 1 - > tools/perf/util/dwarf-aux.c | 204 +++++++++++++++++++++++++++---- > tools/perf/util/dwarf-aux.h | 10 +- > tools/perf/util/environment.c | 1 - > tools/perf/util/machine.c | 8 +- > tools/perf/util/pager.c | 5 - > tools/perf/util/probe-event.h | 1 + > tools/perf/util/probe-finder.c | 90 ++++++++++---- > 19 files changed, 346 insertions(+), 94 deletions(-) Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 32+ messages in thread
* [GIT PULL 00/17] perf/core improvements and fixes @ 2013-02-06 21:44 Arnaldo Carvalho de Melo 2013-02-06 21:51 ` Ingo Molnar 0 siblings, 1 reply; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2013-02-06 21:44 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Andi Kleen, Andrew Jones, Borislav Petkov, Corey Ashford, David Ahern, Feng Tang, Frederic Weisbecker, Jiri Olsa, Joe Perches, Mike Galbraith, Namhyung Kim, Paul Gortmaker, Paul Mackerras, Peter Zijlstra, Stephane Eranian, Arnaldo Carvalho de Melo From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit 0fbdad078a70ed72248c3d30fe32e45e83be00d1: perf/x86: Allow for architecture specific RDPMC indexes (2013-02-06 19:45:24 +0100) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo for you to fetch changes up to 88fd2b6a76264e9e14463f532caae09d82a53207: perf python: Link with sysfs.o (2013-02-06 18:09:28 -0300) ---------------------------------------------------------------- perf/core improvements and fixes . Check for flex and bison before continuing building, from Borislav Petkov. . Make event_copy local to mmaps, fixing buffer wrap around problems, from David Ahern. . Add option for runtime switching perf data file in perf report, just press 's' and a menu with the valid files found in the current directory will be presented, from Feng Tang. . Add support to display whole group data for raw columns, from Jiri Olsa. . Fix SIGALRM and pipe read race for the rwtop perl script. from Jiri Olsa. . Fix perf_evsel::exclude_GH handling and add a test to catch regressions, from Jiri Olsa. . Error checking fixes, from Namhyung Kim. . Fix calloc argument ordering, from Paul Gortmaker. . Fix set event list leader, from Stephane Eranian. . Add per processor socket count aggregation in perf stat, from Stephane Eranian. . Fix perf python binding breakage. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (2): perf evlist: Pass the event_group info via perf_attr_details perf python: Link with sysfs.o Borislav Petkov (1): perf tools: Check for flex and bison before continuing building David Ahern (1): perf evlist: Make event_copy local to mmaps Feng Tang (2): perf hists browser: Add option for runtime switching perf data file perf report: Enable the runtime switching of perf data file Jiri Olsa (4): perf hists browser: Add support to display whole group data for raw columns perf perl scripts: Fix SIGALRM and pipe read race for rwtop perf tools: Fix perf_evsel::exclude_GH handling perf tests: Adding automated parsing tests for group :GH modifiers Namhyung Kim (3): perf sort: Drop ip_[lr] arguments from _sort__sym_cmp() perf sort: Make setup_sorting returns an error code perf sort: Check return value of strdup() Paul Gortmaker (1): perf tools: Fix calloc argument ordering Stephane Eranian (3): perf evlist: Fix set event list leader perf tools: Add cpu_map processor socket level functions perf stat: Add per processor socket count aggregation tools/perf/Documentation/perf-stat.txt | 9 +- tools/perf/Makefile | 13 ++- tools/perf/builtin-annotate.c | 3 +- tools/perf/builtin-diff.c | 4 +- tools/perf/builtin-evlist.c | 4 +- tools/perf/builtin-report.c | 41 +++++--- tools/perf/builtin-stat.c | 126 +++++++++++++++++++++-- tools/perf/builtin-top.c | 3 +- tools/perf/perf.h | 26 ----- tools/perf/scripts/perl/rwtop.pl | 6 +- tools/perf/tests/hists_link.c | 3 +- tools/perf/tests/parse-events.c | 178 ++++++++++++++++++++++++++++++++- tools/perf/ui/browsers/hists.c | 112 ++++++++++++++++++++- tools/perf/ui/hist.c | 53 +++++----- tools/perf/ui/keysyms.h | 1 + tools/perf/util/callchain.c | 2 +- tools/perf/util/cpumap.c | 54 ++++++++++ tools/perf/util/cpumap.h | 9 ++ tools/perf/util/evlist.c | 7 +- tools/perf/util/evlist.h | 29 +++++- tools/perf/util/evsel.c | 2 +- tools/perf/util/evsel.h | 1 + tools/perf/util/header.c | 4 +- tools/perf/util/parse-events.c | 8 -- tools/perf/util/python-ext-sources | 1 + tools/perf/util/sort.c | 38 ++++--- tools/perf/util/sort.h | 2 +- 27 files changed, 611 insertions(+), 128 deletions(-) ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [GIT PULL 00/17] perf/core improvements and fixes 2013-02-06 21:44 Arnaldo Carvalho de Melo @ 2013-02-06 21:51 ` Ingo Molnar 0 siblings, 0 replies; 32+ messages in thread From: Ingo Molnar @ 2013-02-06 21:51 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Arnaldo Carvalho de Melo, Andi Kleen, Andrew Jones, Borislav Petkov, Corey Ashford, David Ahern, Feng Tang, Frederic Weisbecker, Jiri Olsa, Joe Perches, Mike Galbraith, Namhyung Kim, Paul Gortmaker, Paul Mackerras, Peter Zijlstra, Stephane Eranian, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@infradead.org> wrote: > From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> > > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > The following changes since commit 0fbdad078a70ed72248c3d30fe32e45e83be00d1: > > perf/x86: Allow for architecture specific RDPMC indexes (2013-02-06 19:45:24 +0100) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo > > for you to fetch changes up to 88fd2b6a76264e9e14463f532caae09d82a53207: > > perf python: Link with sysfs.o (2013-02-06 18:09:28 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes > > . Check for flex and bison before continuing building, from Borislav Petkov. > > . Make event_copy local to mmaps, fixing buffer wrap around problems, from > David Ahern. > > . Add option for runtime switching perf data file in perf report, just press > 's' and a menu with the valid files found in the current directory will be > presented, from Feng Tang. > > . Add support to display whole group data for raw columns, from Jiri Olsa. > > . Fix SIGALRM and pipe read race for the rwtop perl script. from Jiri Olsa. > > . Fix perf_evsel::exclude_GH handling and add a test to catch regressions, from > Jiri Olsa. > > . Error checking fixes, from Namhyung Kim. > > . Fix calloc argument ordering, from Paul Gortmaker. > > . Fix set event list leader, from Stephane Eranian. > > . Add per processor socket count aggregation in perf stat, from Stephane Eranian. > > . Fix perf python binding breakage. > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (2): > perf evlist: Pass the event_group info via perf_attr_details > perf python: Link with sysfs.o > > Borislav Petkov (1): > perf tools: Check for flex and bison before continuing building > > David Ahern (1): > perf evlist: Make event_copy local to mmaps > > Feng Tang (2): > perf hists browser: Add option for runtime switching perf data file > perf report: Enable the runtime switching of perf data file > > Jiri Olsa (4): > perf hists browser: Add support to display whole group data for raw columns > perf perl scripts: Fix SIGALRM and pipe read race for rwtop > perf tools: Fix perf_evsel::exclude_GH handling > perf tests: Adding automated parsing tests for group :GH modifiers > > Namhyung Kim (3): > perf sort: Drop ip_[lr] arguments from _sort__sym_cmp() > perf sort: Make setup_sorting returns an error code > perf sort: Check return value of strdup() > > Paul Gortmaker (1): > perf tools: Fix calloc argument ordering > > Stephane Eranian (3): > perf evlist: Fix set event list leader > perf tools: Add cpu_map processor socket level functions > perf stat: Add per processor socket count aggregation > > tools/perf/Documentation/perf-stat.txt | 9 +- > tools/perf/Makefile | 13 ++- > tools/perf/builtin-annotate.c | 3 +- > tools/perf/builtin-diff.c | 4 +- > tools/perf/builtin-evlist.c | 4 +- > tools/perf/builtin-report.c | 41 +++++--- > tools/perf/builtin-stat.c | 126 +++++++++++++++++++++-- > tools/perf/builtin-top.c | 3 +- > tools/perf/perf.h | 26 ----- > tools/perf/scripts/perl/rwtop.pl | 6 +- > tools/perf/tests/hists_link.c | 3 +- > tools/perf/tests/parse-events.c | 178 ++++++++++++++++++++++++++++++++- > tools/perf/ui/browsers/hists.c | 112 ++++++++++++++++++++- > tools/perf/ui/hist.c | 53 +++++----- > tools/perf/ui/keysyms.h | 1 + > tools/perf/util/callchain.c | 2 +- > tools/perf/util/cpumap.c | 54 ++++++++++ > tools/perf/util/cpumap.h | 9 ++ > tools/perf/util/evlist.c | 7 +- > tools/perf/util/evlist.h | 29 +++++- > tools/perf/util/evsel.c | 2 +- > tools/perf/util/evsel.h | 1 + > tools/perf/util/header.c | 4 +- > tools/perf/util/parse-events.c | 8 -- > tools/perf/util/python-ext-sources | 1 + > tools/perf/util/sort.c | 38 ++++--- > tools/perf/util/sort.h | 2 +- > 27 files changed, 611 insertions(+), 128 deletions(-) Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 32+ messages in thread
* [GIT PULL 00/17] perf/core improvements and fixes @ 2012-09-05 23:08 Arnaldo Carvalho de Melo 0 siblings, 0 replies; 32+ messages in thread From: Arnaldo Carvalho de Melo @ 2012-09-05 23:08 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Ananth N. Mavinakayanahalli, David Ahern, Frederic Weisbecker, Irina Tirdea, Jiri Olsa, Maciek Borzecki, Namhyung Kim, Namhyung Kim, Paul Mackerras, Peter Zijlstra, Robert Richter, Steven Rostedt, Suzuki K. Poulose, Arnaldo Carvalho de Melo The following changes since commit bab57e994d6311298b4e3915d2c75296cd81638c: Merge branch 'core' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into perf/core (2012-09-05 08:29:56 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo for you to fetch changes up to 7a4ec938857cf534270b23545495300fbac7f5de: perf tools: Allow user to indicate path to objdump in command line (2012-09-05 19:41:55 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: 1) Rename libtraceevent 'private' struct member to 'priv' so that it works in C++, from Steven Rostedt 2) Remove lots of exit()/die() calls from tools so that the main perf exit routine can take place, from David Ahern 3) Fix x86 build on x86-64, from David Ahern. 4) Remove some headers that prevented perf from building on Android, from David Ahern 5) {int,str,rb}list fixes from Suzuki K Poulose 6) perf.data header fixes from Namhyung Kim 7) Replace needless mempcpy with memcpy, to allow build on Android, from Irina Tirdea 8) Allow user to indicate objdump path, needed in cross environments, from Maciek Borzecki Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- David Ahern (9): perf session: flush_sample_queue needs to handle errors from handlers perf tool: handle errors in synthesized event functions perf lock: Remove use of die and handle errors perf stat: Remove use of die/exit and handle errors perf help: Remove use of die and handle errors perf script: Remove use of die/exit perf record: Remove use of die/exit perf tools: Fix x86 builds with ARCH specified on the command line perf tools: remove unneeded include of network header files Irina Tirdea (1): perf tools: Replace mempcpy with memcpy Maciek Borzecki (1): perf tools: Allow user to indicate path to objdump in command line Namhyung Kim (3): perf header: Use evlist->nr_entries on write_event_desc() perf header: Set tracepoint event name only if not set perf header: Swap pmu mapping numbers if needed Steven Rostedt (1): tools lib traceevent: Modify header to work in C++ programs Suzuki K. Poulose (2): perf tools: Fix intlist node removal perf tools: Remove the node from rblist in strlist__remove tools/lib/traceevent/event-parse.h | 4 +- tools/perf/Documentation/perf-annotate.txt | 3 + tools/perf/Documentation/perf-report.txt | 3 + tools/perf/Makefile | 4 +- tools/perf/builtin-annotate.c | 2 + tools/perf/builtin-help.c | 48 ++++-- tools/perf/builtin-lock.c | 181 ++++++++++++++------ tools/perf/builtin-record.c | 158 +++++++++++------ tools/perf/builtin-report.c | 2 + tools/perf/builtin-script.c | 60 +++++-- tools/perf/builtin-stat.c | 7 +- tools/perf/util/annotate.c | 4 +- tools/perf/util/annotate.h | 1 + tools/perf/util/event.c | 35 +++- tools/perf/util/header.c | 13 +- tools/perf/util/intlist.c | 4 +- .../perf/util/scripting-engines/trace-event-perl.c | 8 +- tools/perf/util/session.c | 24 ++- tools/perf/util/strlist.c | 2 +- tools/perf/util/target.c | 4 +- tools/perf/util/util.h | 5 - 21 files changed, 389 insertions(+), 183 deletions(-) ^ permalink raw reply [flat|nested] 32+ messages in thread
end of thread, other threads:[~2019-02-28 7:28 UTC | newest] Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-05-06 0:29 [GIT PULL 00/17] perf/core improvements and fixes Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 01/17] perf machine: Introduce number of threads member Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 02/17] perf tools: Add template for generating rbtree resort class Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 03/17] perf trace: Sort summary output by number of events Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 04/17] perf trace: Sort syscalls stats by msecs in --summary Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 05/17] perf trace: Do not show the runtime_ms for a thread when not collecting it Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 06/17] perf tools powerpc: Add support for generating bpf prologue Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 07/17] perf hists: Move sort__need_collapse into struct perf_hpp_list Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 08/17] perf hists: Move sort__has_parent " Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 09/17] perf hists: Move sort__has_sym " Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 10/17] perf hists: Move sort__has_dso " Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 11/17] perf hists: Move sort__has_socket " Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 12/17] perf hists: Move sort__has_thread " Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 13/17] perf hists: Move sort__has_comm " Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 14/17] perf powerpc: Fix kprobe and kretprobe handling with kallsyms on ppc64le Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 15/17] perf symbols: Fix kallsyms perf test " Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 16/17] perf evlist: Extract perf_mmap__read() Arnaldo Carvalho de Melo 2016-05-06 0:29 ` [PATCH 17/17] perf evlist: Rename variable in perf_mmap__read() Arnaldo Carvalho de Melo 2016-05-06 6:36 ` [GIT PULL 00/17] perf/core improvements and fixes Ingo Molnar -- strict thread matches above, loose matches on Subject: below -- 2019-02-21 1:25 Arnaldo Carvalho de Melo 2019-02-28 7:28 ` Ingo Molnar 2018-04-04 2:21 Arnaldo Carvalho de Melo 2018-04-04 2:21 ` Arnaldo Carvalho de Melo 2018-04-04 5:25 ` Ingo Molnar 2018-04-04 5:25 ` Ingo Molnar 2016-08-04 0:49 Arnaldo Carvalho de Melo 2016-08-04 9:04 ` Ingo Molnar 2015-05-14 22:37 Arnaldo Carvalho de Melo 2015-05-15 6:39 ` Ingo Molnar 2013-02-06 21:44 Arnaldo Carvalho de Melo 2013-02-06 21:51 ` Ingo Molnar 2012-09-05 23:08 Arnaldo Carvalho de Melo
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.