From: Davidlohr Bueso <dave@stgolabs.net>
To: acme@kernel.org
Cc: jolsa@redhat.com, ak@linux.intel.com, mingo@redhat.com,
dave@stgolabs.net, linux-kernel@vger.kernel.org
Subject: [PATCH -tip 0/7] tools/perf: Update rbtree implementation and optimize users
Date: Sun, 26 Nov 2017 18:30:39 -0800 [thread overview]
Message-ID: <20171127023046.19139-1-dave@stgolabs.net> (raw)
Hi,
The following optimizes the rb_first() lookups in perf tooling such that we
can avoid walking down the tree finding the first element. Tree traversals
(and overall computing the first node in the tree) is a surprisingly common
operation.
The first patch adds the updated implementation of rbtrees, including the
cached interfaces, taken from the kernel. The rest of the patches make use
of this for the users I thought might care the most.
With these patches I am able to build and use perf without anything going wrong
(but needs more testing no doubt, as changes while redundant can be a little tricky
depending on if the user get smart about the trees). I'm sorry if some patches
seem too big, I've tried to split them the best I could.
Applies on today's -tip tree. Please consider for v4.16.
Thanks!
Davidlohr Bueso (7):
tools/perf: Update rbtree implementation
perf machine: Use cached rbtrees
perf callchain: Use cached rbtrees
perf util: Use cached rbtree for rblists
perf symbols: Use cached rbtrees
perf hist: Use cached rbtrees
perf sched: Use cached rbtrees
tools/include/linux/rbtree.h | 50 ++++++++-
tools/include/linux/rbtree_augmented.h | 60 ++++++++--
tools/lib/rbtree.c | 171 ++++++++++++++++++++--------
tools/perf/builtin-annotate.c | 4 +-
tools/perf/builtin-c2c.c | 6 +-
tools/perf/builtin-diff.c | 10 +-
tools/perf/builtin-report.c | 2 +-
tools/perf/builtin-sched.c | 45 ++++----
tools/perf/builtin-top.c | 6 +-
tools/perf/tests/hists_common.c | 8 +-
tools/perf/tests/hists_cumulate.c | 19 ++--
tools/perf/tests/hists_link.c | 8 +-
tools/perf/tests/hists_output.c | 32 +++---
tools/perf/tests/vmlinux-kallsyms.c | 3 +-
tools/perf/ui/browsers/hists.c | 16 +--
tools/perf/ui/gtk/hists.c | 6 +-
tools/perf/ui/stdio/hist.c | 3 +-
tools/perf/util/build-id.c | 12 +-
tools/perf/util/dso.c | 7 +-
tools/perf/util/dso.h | 6 +-
tools/perf/util/hist.c | 198 ++++++++++++++++++---------------
tools/perf/util/hist.h | 10 +-
tools/perf/util/intlist.h | 2 +-
tools/perf/util/machine.c | 52 +++++----
tools/perf/util/machine.h | 4 +-
tools/perf/util/map.c | 8 +-
tools/perf/util/metricgroup.c | 2 +-
tools/perf/util/probe-event.c | 3 +-
tools/perf/util/rblist.c | 30 +++--
tools/perf/util/rblist.h | 2 +-
tools/perf/util/sort.h | 4 +-
tools/perf/util/srcline.c | 21 ++--
tools/perf/util/srcline.h | 6 +-
tools/perf/util/stat-shadow.c | 2 +-
tools/perf/util/strlist.h | 2 +-
tools/perf/util/symbol.c | 85 +++++++-------
tools/perf/util/symbol.h | 12 +-
tools/perf/util/symbol_fprintf.c | 3 +-
38 files changed, 570 insertions(+), 350 deletions(-)
--
2.13.6
next reply other threads:[~2017-11-27 2:34 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-27 2:30 Davidlohr Bueso [this message]
2017-11-27 2:30 ` [PATCH 1/7] tools/perf: Update rbtree implementation Davidlohr Bueso
2017-11-27 2:30 ` [PATCH 2/7] perf machine: Use cached rbtrees Davidlohr Bueso
2018-01-04 5:51 ` [lkp-robot] [perf machine] 8edf8850d5: stderr./usr/src/linux-perf-x86_64-rhel-#/tools/perf/util/rb_resort.h:#:#:error:passing_argument#of'threads_sorted__new'from_incompatible_pointer_type[-Werror=incompatible-pointer-types] kernel test robot
2018-01-05 17:04 ` Davidlohr Bueso
2017-11-27 2:30 ` [PATCH 3/7] perf callchain: Use cached rbtrees Davidlohr Bueso
2017-11-27 2:30 ` [PATCH 4/7] perf util: Use cached rbtree for rblists Davidlohr Bueso
2017-11-27 2:30 ` [PATCH 5/7] perf symbols: Use cached rbtrees Davidlohr Bueso
2017-11-27 2:30 ` [PATCH 6/7] perf hist: " Davidlohr Bueso
2017-11-27 2:30 ` [PATCH 7/7] perf sched: " Davidlohr Bueso
2017-11-27 6:06 ` [PATCH -tip 0/7] tools/perf: Update rbtree implementation and optimize users Andi Kleen
2017-11-27 16:14 ` Davidlohr Bueso
2017-11-27 17:14 ` Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171127023046.19139-1-dave@stgolabs.net \
--to=dave@stgolabs.net \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®