lkml.org 
[lkml]   [2010]   [Oct]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH v2 7/8] ring-buffer: Micro-optimize with some strategic inlining
    From: Steven Rostedt <srostedt@redhat.com>

    By using inline and noinline, we are able to make the fast path of
    recording an event 4% faster.

    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    ---
    kernel/trace/ring_buffer.c | 23 +++++++++++++++--------
    1 files changed, 15 insertions(+), 8 deletions(-)

    diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
    index d9f3e7a..f5007d0 100644
    --- a/kernel/trace/ring_buffer.c
    +++ b/kernel/trace/ring_buffer.c
    @@ -2078,7 +2078,7 @@ static void rb_start_commit(struct ring_buffer_per_cpu *cpu_buffer)
    local_inc(&cpu_buffer->commits);
    }

    -static void rb_end_commit(struct ring_buffer_per_cpu *cpu_buffer)
    +static inline void rb_end_commit(struct ring_buffer_per_cpu *cpu_buffer)
    {
    unsigned long commits;

    @@ -2193,13 +2193,9 @@ rb_reserve_next_event(struct ring_buffer *buffer,

    #define TRACE_RECURSIVE_DEPTH 16

    -static int trace_recursive_lock(void)
    +/* Keep this code out of the fast path cache */
    +static noinline void trace_recursive_fail(void)
    {
    - current->trace_recursion++;
    -
    - if (likely(current->trace_recursion < TRACE_RECURSIVE_DEPTH))
    - return 0;
    -
    /* Disable all tracing before we do anything else */
    tracing_off_permanent();

    @@ -2211,10 +2207,21 @@ static int trace_recursive_lock(void)
    in_nmi());

    WARN_ON_ONCE(1);
    +}
    +
    +static inline int trace_recursive_lock(void)
    +{
    + current->trace_recursion++;
    +
    + if (likely(current->trace_recursion < TRACE_RECURSIVE_DEPTH))
    + return 0;
    +
    + trace_recursive_fail();
    +
    return -1;
    }

    -static void trace_recursive_unlock(void)
    +static inline void trace_recursive_unlock(void)
    {
    WARN_ON_ONCE(!current->trace_recursion);

    --
    1.7.1



    \
     
     \ /
      Last update: 2010-10-21 03:45    [W:0.022 / U:1.192 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site