• Peter Zijlstra's avatar
    module: Optimize __module_address() using a latched RB-tree · 93c2e105
    Peter Zijlstra authored
    Currently __module_address() is using a linear search through all
    modules in order to find the module corresponding to the provided
    address. With a lot of modules this can take a lot of time.
    One of the users of this is kernel_text_address() which is employed
    in many stack unwinders; which in turn are used by perf-callchain and
    ftrace (possibly from NMI context).
    So by optimizing __module_address() we optimize many stack unwinders
    which are used by both perf and tracing in performance sensitive code.
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
module.c 102 KB