* [tip:perf/core] perf trace: Sort summary output by number of events
@ 2016-05-06 6:40 tip-bot for Arnaldo Carvalho de Melo
0 siblings, 0 replies; only message in thread
From: tip-bot for Arnaldo Carvalho de Melo @ 2016-05-06 6:40 UTC (permalink / raw)
To: linux-tip-commits
Cc: adrian.hunter, mingo, tglx, acme, dsahern, hpa, milian.wolff,
namhyung, jolsa, linux-kernel, wangnan0
Commit-ID: 96c144512263906cc41a25524fa114c90acd3a01
Gitweb: http://git.kernel.org/tip/96c144512263906cc41a25524fa114c90acd3a01
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
AuthorDate: Wed, 4 May 2016 12:47:16 -0300
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 5 May 2016 21:03:56 -0300
perf trace: Sort summary output by number of events
# 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 9e38fe9..aac0074 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,
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2016-05-06 6:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-06 6:40 [tip:perf/core] perf trace: Sort summary output by number of events tip-bot for 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.