lkml.org 
[lkml]   [2009]   [Jan]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [GIT PULL] adaptive spinning mutexes
    From
    Date
    On Wed, 2009-01-14 at 10:53 -0800, Andrew Morton wrote:
    > On Wed, 14 Jan 2009 19:33:19 +0100 Ingo Molnar <mingo@elte.hu> wrote:
    >
    > > Please pull the adaptive-mutexes-for-linus git tree
    >
    > <fear>
    >
    > - It seems a major shortcoming that the feature is disabled if
    > CONFIG_DEBUG_MUTEXES=y. It means that lots of people won't test it.

    Yes, that's a bit unfortunate, a simple patch to enable that is:

    I must admit I'm a bit stumped on why that debug check triggers, I
    couldn't reproduce today, but Ingo ran into it quite quickly :/

    Index: linux-2.6/kernel/mutex-debug.c
    ===================================================================
    --- linux-2.6.orig/kernel/mutex-debug.c
    +++ linux-2.6/kernel/mutex-debug.c
    @@ -74,7 +74,7 @@ void debug_mutex_unlock(struct mutex *lo
    return;

    DEBUG_LOCKS_WARN_ON(lock->magic != lock);
    - DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info());
    + /* DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info()); */
    DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);
    mutex_clear_owner(lock);
    }
    Index: linux-2.6/kernel/mutex.c
    ===================================================================
    --- linux-2.6.orig/kernel/mutex.c
    +++ linux-2.6/kernel/mutex.c
    @@ -148,7 +148,7 @@ __mutex_lock_common(struct mutex *lock,

    preempt_disable();
    mutex_acquire(&lock->dep_map, subclass, 0, ip);
    -#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES)
    +#ifdef CONFIG_SMP
    /*
    * Optimistic spinning.
    *
    @@ -162,9 +162,6 @@ __mutex_lock_common(struct mutex *lock,
    * Since this needs the lock owner, and this mutex implementation
    * doesn't track the owner atomically in the lock field, we need to
    * track it non-atomically.
    - *
    - * We can't do this for DEBUG_MUTEXES because that relies on wait_lock
    - * to serialize everything.
    */

    for (;;) {

    > - When people hit performance/latency oddities, it would be nice if
    > they had a /proc knob with which they could disable this feature at
    > runtime.
    >
    > This would also be useful for comparative performance testing.

    CONFIG_SCHED_DEBUG=y

    echo NO_MUTEX_SPIN > /debug/sched_features



    \
     
     \ /
      Last update: 2009-01-14 20:27    [W:0.020 / U:61.376 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site