linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Frédéric Weisbecker" <fweisbec@gmail.com>
To: "Peter Zijlstra" <peterz@infradead.org>
Cc: "Linus Torvalds" <torvalds@linux-foundation.org>,
	paulmck@linux.vnet.ibm.com,
	"Gregory Haskins" <ghaskins@novell.com>,
	"Ingo Molnar" <mingo@elte.hu>, "Matthew Wilcox" <matthew@wil.cx>,
	"Andi Kleen" <andi@firstfloor.org>,
	"Chris Mason" <chris.mason@oracle.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	linux-btrfs <linux-btrfs@vger.kernel.org>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Steven Rostedt" <rostedt@goodmis.org>,
	"Nick Piggin" <npiggin@suse.de>,
	"Peter Morreale" <pmorreale@novell.com>,
	"Sven Dietrich" <SDietrich@novell.com>
Subject: Re: [PATCH -v4][RFC]: mutex: implement adaptive spinning
Date: Wed, 7 Jan 2009 15:50:29 +0100	[thread overview]
Message-ID: <c62985530901070650x3264c6d5g14788c5440fe5d3@mail.gmail.com> (raw)
In-Reply-To: <1231329783.11687.287.camel@twins>

2009/1/7 Peter Zijlstra <peterz@infradead.org>:
> Change mutex contention behaviour such that it will sometimes busy wait on
> acquisition - moving its behaviour closer to that of spinlocks.
>
> This concept got ported to mainline from the -rt tree, where it was originally
> implemented for rtmutexes by Steven Rostedt, based on work by Gregory Haskins.
>
> Testing with Ingo's test-mutex application (http://lkml.org/lkml/2006/1/8/50)
> gave a 8% boost for VFS scalability on my testbox:
>
>  # echo MUTEX_SPIN > /debug/sched_features
>  # ./test-mutex V 16 10
>  2 CPUs, running 16 parallel test-tasks.
>  checking VFS performance.
>
>  avg ops/sec:                74910
>
>  # echo NO_MUTEX_SPIN > /debug/sched_features
>  # ./test-mutex V 16 10
>  2 CPUs, running 16 parallel test-tasks.
>  checking VFS performance.
>
>  avg ops/sec:                68804
>
> The key criteria for the busy wait is that the lock owner has to be running on
> a (different) cpu. The idea is that as long as the owner is running, there is a
> fair chance it'll release the lock soon, and thus we'll be better off spinning
> instead of blocking/scheduling.
>
> Since regular mutexes (as opposed to rtmutexes) do not atomically track the
> owner, we add the owner in a non-atomic fashion and deal with the races in
> the slowpath.
>
> Furthermore, to ease the testing of the performance impact of this new code,
> there is means to disable this behaviour runtime (without having to reboot
> the system), when scheduler debugging is enabled (CONFIG_SCHED_DEBUG=y),
> by issuing the following command:
>
>  # echo NO_MUTEX_SPIN > /debug/sched_features
>
> This command re-enables spinning again (this is also the default):
>
>  # echo MUTEX_SPIN > /debug/sched_features
>
> There's also a few new statistic fields in /proc/sched_debug
> (available if CONFIG_SCHED_DEBUG=y and CONFIG_SCHEDSTATS=y):
>
>  # grep mtx /proc/sched_debug
>  .mtx_spin                      : 2387
>  .mtx_sched                     : 2283
>  .mtx_spin                      : 1277
>  .mtx_sched                     : 1700
>
> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Reviewed-and-signed-off-by: Ingo Molnar <mingo@elte.hu>
> ---
>  include/linux/mutex.h   |    4 +-
>  include/linux/sched.h   |    2 +
>  kernel/mutex-debug.c    |   10 +------
>  kernel/mutex-debug.h    |    8 -----
>  kernel/mutex.c          |   46 ++++++++++++++++++++++--------
>  kernel/mutex.h          |    2 -
>  kernel/sched.c          |   73 +++++++++++++++++++++++++++++++++++++++++++++++
>  kernel/sched_debug.c    |    2 +
>  kernel/sched_features.h |    1 +
>  9 files changed, 115 insertions(+), 33 deletions(-)
>
> diff --git a/include/linux/mutex.h b/include/linux/mutex.h
> index 7a0e5c4..c007b4e 100644
> --- a/include/linux/mutex.h
> +++ b/include/linux/mutex.h
> @@ -50,8 +50,8 @@ struct mutex {
>        atomic_t                count;
>        spinlock_t              wait_lock;
>        struct list_head        wait_list;
> +       struct task_struct      *owner;
>  #ifdef CONFIG_DEBUG_MUTEXES
> -       struct thread_info      *owner;
>        const char              *name;
>        void                    *magic;
>  #endif
> @@ -67,8 +67,8 @@ struct mutex {
>  struct mutex_waiter {
>        struct list_head        list;
>        struct task_struct      *task;
> -#ifdef CONFIG_DEBUG_MUTEXES
>        struct mutex            *lock;
> +#ifdef CONFIG_DEBUG_MUTEXES
>        void                    *magic;
>  #endif
>  };
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index 4cae9b8..d8fa96b 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -328,6 +328,8 @@ extern signed long schedule_timeout(signed long timeout);
>  extern signed long schedule_timeout_interruptible(signed long timeout);
>  extern signed long schedule_timeout_killable(signed long timeout);
>  extern signed long schedule_timeout_uninterruptible(signed long timeout);
> +extern void mutex_spin_or_schedule(struct mutex_waiter *waiter, long state,
> +                                  unsigned long *flags);
>  asmlinkage void schedule(void);
>
>  struct nsproxy;
> diff --git a/kernel/mutex-debug.c b/kernel/mutex-debug.c
> index 1d94160..0564680 100644
> --- a/kernel/mutex-debug.c
> +++ b/kernel/mutex-debug.c
> @@ -26,11 +26,6 @@
>  /*
>  * Must be called with lock->wait_lock held.
>  */
> -void debug_mutex_set_owner(struct mutex *lock, struct thread_info *new_owner)
> -{
> -       lock->owner = new_owner;
> -}
> -
>  void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter)
>  {
>        memset(waiter, MUTEX_DEBUG_INIT, sizeof(*waiter));
> @@ -59,7 +54,6 @@ void debug_mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter,
>
>        /* Mark the current thread as blocked on the lock: */
>        ti->task->blocked_on = waiter;
> -       waiter->lock = lock;
>  }
>
>  void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
> @@ -80,9 +74,8 @@ void debug_mutex_unlock(struct mutex *lock)
>                return;
>
>        DEBUG_LOCKS_WARN_ON(lock->magic != lock);
> -       DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info());
> +       /* DEBUG_LOCKS_WARN_ON(lock->owner != current); */
>        DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);
> -       DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info());
>  }
>
>  void debug_mutex_init(struct mutex *lock, const char *name,
> @@ -95,7 +88,6 @@ void debug_mutex_init(struct mutex *lock, const char *name,
>        debug_check_no_locks_freed((void *)lock, sizeof(*lock));
>        lockdep_init_map(&lock->dep_map, name, key, 0);
>  #endif
> -       lock->owner = NULL;
>        lock->magic = lock;
>  }
>
> diff --git a/kernel/mutex-debug.h b/kernel/mutex-debug.h
> index babfbdf..42eab06 100644
> --- a/kernel/mutex-debug.h
> +++ b/kernel/mutex-debug.h
> @@ -13,14 +13,6 @@
>  /*
>  * This must be called with lock->wait_lock held.
>  */
> -extern void
> -debug_mutex_set_owner(struct mutex *lock, struct thread_info *new_owner);
> -
> -static inline void debug_mutex_clear_owner(struct mutex *lock)
> -{
> -       lock->owner = NULL;
> -}
> -
>  extern void debug_mutex_lock_common(struct mutex *lock,
>                                    struct mutex_waiter *waiter);
>  extern void debug_mutex_wake_waiter(struct mutex *lock,
> diff --git a/kernel/mutex.c b/kernel/mutex.c
> index 4f45d4b..089b46b 100644
> --- a/kernel/mutex.c
> +++ b/kernel/mutex.c
> @@ -10,6 +10,10 @@
>  * Many thanks to Arjan van de Ven, Thomas Gleixner, Steven Rostedt and
>  * David Howells for suggestions and improvements.
>  *
> + *  - Adaptive spinning for mutexes by Peter Zijlstra. (Ported to mainline
> + *    from the -rt tree, where it was originally implemented for rtmutexes
> + *    by Steven Rostedt, based on work by Gregory Haskins.)
> + *
>  * Also see Documentation/mutex-design.txt.
>  */
>  #include <linux/mutex.h>
> @@ -46,6 +50,7 @@ __mutex_init(struct mutex *lock, const char *name, struct lock_class_key *key)
>        atomic_set(&lock->count, 1);
>        spin_lock_init(&lock->wait_lock);
>        INIT_LIST_HEAD(&lock->wait_list);
> +       lock->owner = NULL;
>
>        debug_mutex_init(lock, name, key);
>  }
> @@ -91,6 +96,7 @@ void inline __sched mutex_lock(struct mutex *lock)
>         * 'unlocked' into 'locked' state.
>         */
>        __mutex_fastpath_lock(&lock->count, __mutex_lock_slowpath);
> +       lock->owner = current;
>  }
>
>  EXPORT_SYMBOL(mutex_lock);
> @@ -115,6 +121,7 @@ void __sched mutex_unlock(struct mutex *lock)
>         * The unlocking fastpath is the 0->1 transition from 'locked'
>         * into 'unlocked' state:
>         */
> +       lock->owner = NULL;
>        __mutex_fastpath_unlock(&lock->count, __mutex_unlock_slowpath);
>  }
>
> @@ -141,6 +148,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
>        /* add waiting tasks to the end of the waitqueue (FIFO): */
>        list_add_tail(&waiter.list, &lock->wait_list);
>        waiter.task = task;
> +       waiter.lock = lock;
>
>        old_val = atomic_xchg(&lock->count, -1);
>        if (old_val == 1)
> @@ -175,19 +183,15 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
>                        debug_mutex_free_waiter(&waiter);
>                        return -EINTR;
>                }
> -               __set_task_state(task, state);
>
> -               /* didnt get the lock, go to sleep: */
> -               spin_unlock_mutex(&lock->wait_lock, flags);
> -               schedule();
> -               spin_lock_mutex(&lock->wait_lock, flags);
> +               mutex_spin_or_schedule(&waiter, state, &flags);
>        }
>
>  done:
>        lock_acquired(&lock->dep_map, ip);
>        /* got the lock - rejoice! */
>        mutex_remove_waiter(lock, &waiter, task_thread_info(task));
> -       debug_mutex_set_owner(lock, task_thread_info(task));
> +       lock->owner = task;
>
>        /* set it to 0 if there are no waiters left: */
>        if (likely(list_empty(&lock->wait_list)))
> @@ -260,7 +264,7 @@ __mutex_unlock_common_slowpath(atomic_t *lock_count, int nested)
>                wake_up_process(waiter->task);
>        }
>
> -       debug_mutex_clear_owner(lock);
> +       lock->owner = NULL;
>
>        spin_unlock_mutex(&lock->wait_lock, flags);
>  }
> @@ -298,18 +302,30 @@ __mutex_lock_interruptible_slowpath(atomic_t *lock_count);
>  */
>  int __sched mutex_lock_interruptible(struct mutex *lock)
>  {
> +       int ret;
> +
>        might_sleep();
> -       return __mutex_fastpath_lock_retval
> +       ret =  __mutex_fastpath_lock_retval
>                        (&lock->count, __mutex_lock_interruptible_slowpath);
> +       if (!ret)
> +               lock->owner = current;
> +
> +       return ret;
>  }
>
>  EXPORT_SYMBOL(mutex_lock_interruptible);
>
>  int __sched mutex_lock_killable(struct mutex *lock)
>  {
> +       int ret;
> +
>        might_sleep();
> -       return __mutex_fastpath_lock_retval
> +       ret = __mutex_fastpath_lock_retval
>                        (&lock->count, __mutex_lock_killable_slowpath);
> +       if (!ret)
> +               lock->owner = current;
> +
> +       return ret;
>  }
>  EXPORT_SYMBOL(mutex_lock_killable);
>
> @@ -352,9 +368,10 @@ static inline int __mutex_trylock_slowpath(atomic_t *lock_count)
>
>        prev = atomic_xchg(&lock->count, -1);
>        if (likely(prev == 1)) {
> -               debug_mutex_set_owner(lock, current_thread_info());
> +               lock->owner = current;
>                mutex_acquire(&lock->dep_map, 0, 1, _RET_IP_);
>        }
> +
>        /* Set it back to 0 if there are no waiters: */
>        if (likely(list_empty(&lock->wait_list)))
>                atomic_set(&lock->count, 0);
> @@ -380,8 +397,13 @@ static inline int __mutex_trylock_slowpath(atomic_t *lock_count)
>  */
>  int __sched mutex_trylock(struct mutex *lock)
>  {
> -       return __mutex_fastpath_trylock(&lock->count,
> -                                       __mutex_trylock_slowpath);
> +       int ret;
> +
> +       ret = __mutex_fastpath_trylock(&lock->count, __mutex_trylock_slowpath);
> +       if (ret)
> +               lock->owner = current;
> +
> +       return ret;
>  }
>
>  EXPORT_SYMBOL(mutex_trylock);
> diff --git a/kernel/mutex.h b/kernel/mutex.h
> index a075daf..55e1986 100644
> --- a/kernel/mutex.h
> +++ b/kernel/mutex.h
> @@ -16,8 +16,6 @@
>  #define mutex_remove_waiter(lock, waiter, ti) \
>                __list_del((waiter)->list.prev, (waiter)->list.next)
>
> -#define debug_mutex_set_owner(lock, new_owner)         do { } while (0)
> -#define debug_mutex_clear_owner(lock)                  do { } while (0)
>  #define debug_mutex_wake_waiter(lock, waiter)          do { } while (0)
>  #define debug_mutex_free_waiter(waiter)                        do { } while (0)
>  #define debug_mutex_add_waiter(lock, waiter, ti)       do { } while (0)
> diff --git a/kernel/sched.c b/kernel/sched.c
> index 2e3545f..c189597 100644
> --- a/kernel/sched.c
> +++ b/kernel/sched.c
> @@ -631,6 +631,10 @@ struct rq {
>
>        /* BKL stats */
>        unsigned int bkl_count;
> +
> +       /* mutex spin stats */
> +       unsigned int mtx_spin;
> +       unsigned int mtx_sched;
>  #endif
>  };
>
> @@ -4527,6 +4531,75 @@ pick_next_task(struct rq *rq, struct task_struct *prev)
>        }
>  }
>
> +#ifdef CONFIG_DEBUG_MUTEXES
> +# include "mutex-debug.h"
> +#else
> +# include "mutex.h"
> +#endif
> +
> +void mutex_spin_or_schedule(struct mutex_waiter *waiter, long state,
> +                           unsigned long *flags)
> +{
> +       struct mutex *lock = waiter->lock;
> +       struct task_struct *task = waiter->task;
> +       struct task_struct *owner = lock->owner;
> +       struct rq *rq;
> +       int spin = 0;
> +
> +       if (likely(sched_feat(MUTEX_SPIN) && owner)) {
> +               rq = task_rq(owner);
> +               spin = (rq->curr == owner);
> +       }
> +
> +       if (!spin) {
> +               schedstat_inc(this_rq(), mtx_sched);
> +               __set_task_state(task, state);
> +               spin_unlock_mutex(&lock->wait_lock, *flags);
> +               schedule();
> +               spin_lock_mutex(&lock->wait_lock, *flags);
> +               return;
> +       }
> +
> +       schedstat_inc(this_rq(), mtx_spin);
> +       spin_unlock_mutex(&lock->wait_lock, *flags);
> +       for (;;) {
> +               struct task_struct *l_owner;
> +
> +               /* Stop spinning when there's a pending signal. */
> +               if (signal_pending_state(state, task))
> +                       break;
> +
> +               /* Mutex got unlocked, try to acquire. */
> +               if (!mutex_is_locked(lock))
> +                       break;
> +
> +               /*
> +                * Owner changed, bail to re-assess state.
> +                *
> +                * We ignore !owner because that would break us out of
> +                * the spin too early -- see mutex_unlock() -- and make
> +                * us schedule -- see the !owner case on top -- at the
> +                * worst possible moment.
> +                */
> +               l_owner = ACCESS_ONCE(lock->owner);
> +               if (l_owner && l_owner != owner)
> +                       break;
> +
> +               /* Owner stopped running, bail to re-assess state. */
> +               if (rq->curr != owner)
> +                       break;
> +
> +               /*
> +                * cpu_relax() provides a compiler barrier that ensures we
> +                * reload everything every time. SMP barriers are not strictly
> +                * required as the worst case is we'll spin a bit more before
> +                * we observe the right values.
> +                */
> +               cpu_relax();
> +       }
> +       spin_lock_mutex(&lock->wait_lock, *flags);
> +}


Hi Peter,

Sorry I haven't read all the previous talk about the older version.
But it is possible that, in hopefully rare cases, you enter
mutex_spin_or_schedule
multiple times, and try to spin for the same lock each of these times.

For each of the above break,

_if you exit the spin because the mutex is unlocked, and someone else
grab it before you
_ or simply the owner changed...

then you will enter again in mutex_spin_or_schedule, you have some chances that
rq->curr == the new owner, and then you will spin again.
And this situation can almost really make you behave like a spinlock...

Shouldn't it actually try only one time to spin, and if it calls again
mutex_spin_or_schedule()
then it would be better to schedule()  ?

Or I misunderstood something...?

Thanks.



> +
>  /*
>  * schedule() is the main scheduler function.
>  */
> diff --git a/kernel/sched_debug.c b/kernel/sched_debug.c
> index 4293cfa..3dec83a 100644
> --- a/kernel/sched_debug.c
> +++ b/kernel/sched_debug.c
> @@ -288,6 +288,8 @@ static void print_cpu(struct seq_file *m, int cpu)
>
>        P(bkl_count);
>
> +       P(mtx_spin);
> +       P(mtx_sched);
>  #undef P
>  #endif
>        print_cfs_stats(m, cpu);
> diff --git a/kernel/sched_features.h b/kernel/sched_features.h
> index da5d93b..f548627 100644
> --- a/kernel/sched_features.h
> +++ b/kernel/sched_features.h
> @@ -13,3 +13,4 @@ SCHED_FEAT(LB_WAKEUP_UPDATE, 1)
>  SCHED_FEAT(ASYM_EFF_LOAD, 1)
>  SCHED_FEAT(WAKEUP_OVERLAP, 0)
>  SCHED_FEAT(LAST_BUDDY, 1)
> +SCHED_FEAT(MUTEX_SPIN, 1)
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>

  reply	other threads:[~2009-01-07 14:50 UTC|newest]

Thread overview: 362+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-31 11:28 Btrfs for mainline Chris Mason
2008-12-31 18:45 ` Andrew Morton
2008-12-31 23:19   ` Chris Mason
2009-01-02 16:37     ` Ryusuke Konishi
2009-01-02 18:06       ` Chris Mason
2009-01-02 19:38       ` Chris Mason
2009-01-03  9:44         ` Ryusuke Konishi
2009-01-05 14:14           ` Chris Mason
2009-01-05 16:43             ` Ryusuke Konishi
2009-01-05 10:32         ` Nick Piggin
2009-01-05 13:21           ` Chris Mason
2009-01-05 14:39             ` generic pagecache to block mapping layer (was Re: Btrfs for mainline) Nick Piggin
2009-01-05 16:37               ` Chris Mason
2009-01-05 17:10                 ` Nick Piggin
2009-01-06 17:20                   ` Nick Piggin
2009-01-02 19:05     ` Btrfs for mainline Andi Kleen
2009-01-02 19:32       ` Chris Mason
2009-01-02 21:01         ` Andi Kleen
2009-01-02 21:35           ` Chris Mason
2009-01-02 22:26             ` Roland Dreier
2009-01-04 13:28               ` KOSAKI Motohiro
2009-01-04 15:56                 ` Ed Tomlinson
2009-01-05 10:07           ` Chris Samuel
2009-01-05 13:18             ` Chris Mason
2009-01-05 16:33               ` J. Bruce Fields
2009-01-06 22:09                 ` Jamie Lokier
2009-01-03 19:17       ` Matthew Wilcox
2009-01-03 19:50         ` Christoph Hellwig
2009-01-03 20:17           ` Chris Mason
2009-01-04 21:52             ` Arnd Bergmann
2009-01-05 14:01               ` Chris Mason
2009-01-03 21:12           ` Matthew Wilcox
2009-01-04 18:21         ` Peter Zijlstra
2009-01-04 18:41           ` Matthew Wilcox
2009-01-05 14:47             ` Nick Piggin
2009-01-05 16:23               ` Matthew Wilcox
2009-01-05 16:30               ` Chris Mason
2009-01-07 13:07                 ` Ingo Molnar
2009-01-07 13:24                   ` Matthew Wilcox
2009-01-07 14:56                     ` Ingo Molnar
2009-01-06 11:40             ` [PATCH][RFC]: mutex: adaptive spin Peter Zijlstra
2009-01-06 12:10               ` Ingo Molnar
2009-01-06 12:21                 ` Peter Zijlstra
2009-01-06 15:01                   ` Matthew Wilcox
2009-01-06 13:10                 ` Gregory Haskins
2009-01-06 13:16                   ` Ingo Molnar
2009-01-06 13:20                     ` Peter Zijlstra
2009-01-06 14:15                       ` Gregory Haskins
2009-01-06 21:42                         ` Paul E. McKenney
2009-01-06 21:44                           ` Peter Zijlstra
2009-01-06 21:50                             ` Linus Torvalds
2009-01-06 22:07                               ` Peter Zijlstra
2009-01-06 22:22                                 ` Linus Torvalds
2009-01-06 22:43                                   ` Peter Zijlstra
2009-01-06 22:56                                     ` Linus Torvalds
2009-01-06 23:00                                     ` Linus Torvalds
2009-01-06 23:09                                       ` Matthew Wilcox
2009-01-07  0:06                                         ` Linus Torvalds
2009-01-06 23:16                                     ` Peter Zijlstra
2009-01-07 12:03                                       ` [PATCH -v4][RFC]: mutex: implement adaptive spinning Peter Zijlstra
2009-01-07 14:50                                         ` Frédéric Weisbecker [this message]
2009-01-07 14:58                                           ` Peter Zijlstra
2009-01-07 15:22                                         ` Steven Rostedt
2009-01-07 15:29                                           ` Steven Rostedt
2009-01-07 15:54                                           ` Peter Zijlstra
2009-01-07 16:25                                         ` Linus Torvalds
2009-01-07 16:57                                           ` [PATCH -v5][RFC]: " Peter Zijlstra
2009-01-07 18:55                                             ` Linus Torvalds
2009-01-07 20:40                                               ` Steven Rostedt
2009-01-07 20:55                                                 ` Linus Torvalds
2009-01-07 21:09                                                   ` Matthew Wilcox
2009-01-07 21:24                                                     ` Linus Torvalds
2009-01-07 21:32                                                       ` Ingo Molnar
2009-01-07 21:47                                                         ` Andrew Morton
2009-01-07 21:57                                                           ` Ingo Molnar
2009-01-07 21:39                                                       ` Linus Torvalds
2009-01-07 21:39                                                     ` Andi Kleen
2009-01-07 22:28                                                       ` Gregory Haskins
2009-01-07 22:33                                                         ` Ingo Molnar
2009-01-07 22:51                                                           ` Peter W. Morreale
2009-01-07 23:14                                                             ` Peter W. Morreale
2009-01-07 22:56                                                           ` Gregory Haskins
2009-01-07 23:09                                                             ` Steven Rostedt
2009-01-07 23:32                                                               ` Linus Torvalds
2009-01-07 23:46                                                                 ` Steven Rostedt
2009-01-07 23:47                                                                   ` Steven Rostedt
2009-01-07 23:52                                                                     ` Linus Torvalds
2009-01-08  3:28                                                                 ` Gregory Haskins
2009-01-08  7:10                                                                 ` Peter Zijlstra
2009-01-07 23:15                                                         ` Linus Torvalds
2009-01-07 23:18                                                           ` Linus Torvalds
2009-01-08  3:27                                                             ` Gregory Haskins
2009-01-08  3:38                                                               ` Steven Rostedt
2009-01-08  4:00                                                                 ` Gregory Haskins
2009-01-07 23:23                                                         ` Paul E. McKenney
2009-01-07 21:28                                                   ` Ingo Molnar
2009-01-07 21:51                                                   ` Peter Zijlstra
2009-01-07 21:58                                                     ` Linus Torvalds
2009-01-07 22:06                                                       ` Linus Torvalds
2009-01-07 22:18                                                       ` Peter Zijlstra
2009-01-07 23:10                                                         ` Linus Torvalds
2009-01-08  9:58                                                           ` [PATCH -v6][RFC]: " Peter Zijlstra
2009-01-08 14:18                                                             ` Ingo Molnar
2009-01-08 14:33                                                               ` Gregory Haskins
2009-01-08 14:46                                                               ` [PATCH -v7][RFC]: " Peter Zijlstra
2009-01-08 15:09                                                                 ` Steven Rostedt
2009-01-08 15:23                                                                   ` Peter Zijlstra
2009-01-08 15:28                                                                     ` Steven Rostedt
2009-01-08 15:30                                                                       ` Peter Zijlstra
2009-01-08 15:30                                                                       ` Steven Rostedt
2009-01-08 16:11                                                                 ` Linus Torvalds
2009-01-08 16:58                                                                 ` Linus Torvalds
2009-01-08 17:08                                                                   ` Chris Mason
2009-01-08 17:33                                                                     ` Steven Rostedt
2009-01-08 17:52                                                                       ` Linus Torvalds
2009-01-08 18:03                                                                         ` Steven Rostedt
     [not found]                                                                         ` <alpine.DEB.1.10.0901081300370.24688@gandalf.stny.rr.com>
2009-01-08 18:14                                                                           ` Steven Rostedt
2009-01-08 19:17                                                                             ` Chris Mason
2009-01-08 19:45                                                                               ` Steven Rostedt
2009-01-08 18:16                                                                           ` Linus Torvalds
2009-01-08 18:27                                                                             ` Chris Mason
2009-01-08 19:02                                                                               ` Chris Mason
2009-01-08 19:13                                                                                 ` Linus Torvalds
2009-01-08 19:23                                                                                   ` Peter Zijlstra
2009-01-09 17:40                                                                                     ` Jiri Kosina
2009-01-09  9:28                                                                                   ` Peter Zijlstra
2009-01-10 23:59                                                                                   ` Jeremy Fitzhardinge
2009-01-08 19:54                                                                                 ` Linus Torvalds
2009-01-08 20:12                                                                                   ` Steven Rostedt
2009-01-09 10:47                                                                                   ` Peter Zijlstra
2009-01-09 15:06                                                                                     ` Peter Zijlstra
2009-01-09 15:11                                                                                       ` Chris Mason
2009-01-09 15:59                                                                                       ` Steven Rostedt
2009-01-09 16:03                                                                                         ` Peter Zijlstra
2009-01-09 16:34                                                                                         ` Linus Torvalds
2009-01-09 16:44                                                                                           ` Steven Rostedt
2009-01-09 18:16                                                                                             ` Peter Zijlstra
2009-01-09 18:24                                                                                               ` Linus Torvalds
2009-01-08 18:00                                                                     ` Linus Torvalds
2009-01-08 18:33                                                                       ` Ingo Molnar
2009-01-08 18:41                                                                         ` H. Peter Anvin
2009-01-09  3:46                                                                           ` Linus Torvalds
2009-01-09  4:59                                                                             ` David Miller
2009-01-09  5:00                                                                             ` H. Peter Anvin
2009-01-09 13:00                                                                             ` [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact Ingo Molnar
2009-01-09 14:03                                                                               ` jim owens
2009-01-09 15:35                                                                                 ` Ingo Molnar
2009-01-09 16:28                                                                                   ` Linus Torvalds
2009-01-09 19:56                                                                                     ` H. Peter Anvin
2009-01-10  8:55                                                                                       ` Chris Samuel
2009-01-09 20:17                                                                                     ` Nicholas Miell
2009-01-09 20:29                                                                                       ` Linus Torvalds
2009-01-09 23:28                                                                                         ` Nicholas Miell
2009-01-10  0:05                                                                                           ` Linus Torvalds
2009-01-10  0:37                                                                                             ` Andi Kleen
2009-01-10  0:41                                                                                               ` Linus Torvalds
2009-01-10  1:08                                                                                                 ` Andi Kleen
2009-01-10  2:12                                                                                             ` Nicholas Miell
2009-01-10  4:05                                                                                               ` Linus Torvalds
2009-01-10  6:44                                                                                                 ` Nicholas Miell
2009-01-09 20:29                                                                                       ` Steven Rostedt
2009-01-09 16:34                                                                                   ` H. Peter Anvin
2009-01-09 16:44                                                                                     ` Linus Torvalds
2009-01-09 16:47                                                                                       ` Dirk Hohndel
2009-01-09 16:46                                                                                     ` Dirk Hohndel
2009-01-09 16:51                                                                                       ` H. Peter Anvin
2009-01-09 17:07                                                                                         ` Steven Rostedt
2009-01-09 17:14                                                                                           ` Linus Torvalds
2009-01-09 17:32                                                                                           ` Andi Kleen
2009-01-09 17:20                                                                                       ` Andi Kleen
2009-01-09 17:11                                                                                         ` Linus Torvalds
2009-01-09 17:46                                                                                           ` Andi Kleen
2009-01-09 17:28                                                                                         ` Matthew Wilcox
2009-01-09 17:47                                                                                           ` Andi Kleen
2009-01-09 17:39                                                                                             ` Matthew Wilcox
2009-01-09 17:54                                                                                               ` Linus Torvalds
2009-01-09 18:07                                                                                                 ` H. Peter Anvin
2009-01-09 18:19                                                                                                 ` Andi Kleen
2009-01-09 18:59                                                                                                   ` Richard Guenther
2009-01-09 19:13                                                                                                     ` H. Peter Anvin
2009-01-09 19:21                                                                                                     ` Andi Kleen
2009-01-09 19:10                                                                                                       ` Richard Guenther
2009-01-09 19:17                                                                                                         ` H. Peter Anvin
2009-01-09 19:40                                                                                                         ` Andi Kleen
2009-01-09 19:32                                                                                                           ` Richard Guenther
2009-01-09 19:09                                                                                                 ` Richard Guenther
2009-01-09 19:44                                                                                                   ` Linus Torvalds
2009-01-09 20:14                                                                                                     ` Richard Guenther
2009-01-09 20:26                                                                                                       ` Linus Torvalds
2009-01-09 20:37                                                                                                         ` Richard Guenther
2009-01-09 21:23                                                                                                           ` Theodore Tso
2009-01-09 21:33                                                                                                             ` Steven Rostedt
2009-01-09 20:58                                                                                                         ` Sam Ravnborg
2009-01-09 17:41                                                                                             ` Dirk Hohndel
2009-01-09 18:02                                                                                               ` Andi Kleen
2009-01-09 17:57                                                                                                 ` Linus Torvalds
2009-01-09 18:55                                                                                                   ` Andi Kleen
2009-01-09 19:00                                                                                                     ` Linus Torvalds
2009-01-09 19:35                                                                                                       ` Andi Kleen
2009-01-09 19:29                                                                                                         ` Matthew Wilcox
2009-01-09 19:48                                                                                                           ` Linus Torvalds
2009-01-09 19:52                                                                                                     ` Theodore Tso
2009-01-09 22:07                                                                                                       ` Arjan van de Ven
2009-01-09 22:44                                                                                                       ` Andi Kleen
     [not found]                                                                                                       ` <20090109224410.GQ26290@one.firstfloor.org>
2009-01-09 22:35                                                                                                         ` H. Peter Anvin
2009-01-09 22:55                                                                                                           ` Arjan van de Ven
2009-01-09 23:32                                                                                                         ` Sam Ravnborg
2009-01-10  5:29                                                                                                       ` Arjan van de Ven
2009-01-10  5:57                                                                                                         ` H. Peter Anvin
2009-01-11 22:45                                                                                     ` Valdis.Kletnieks
2009-01-09 17:13                                                                                 ` Christoph Hellwig
2009-01-09 15:25                                                                               ` Ingo Molnar
2009-01-08 19:00                                                                         ` [PATCH -v7][RFC]: mutex: implement adaptive spinning Andi Kleen
2009-01-09  1:42                                                                           ` H. Peter Anvin
2009-01-09 13:37                                                                             ` Ingo Molnar
2009-01-09 16:09                                                                               ` Linus Torvalds
2009-01-09 16:23                                                                                 ` H. Peter Anvin
2009-01-09 16:37                                                                                   ` Linus Torvalds
2009-01-09 20:41                                                                                 ` Ingo Molnar
2009-01-09 20:56                                                                                   ` Ingo Molnar
2009-01-09 20:56                                                                                   ` Linus Torvalds
2009-01-09 21:34                                                                                     ` Ingo Molnar
2009-01-09 21:41                                                                                       ` Harvey Harrison
2009-01-09 21:50                                                                                         ` Linus Torvalds
2009-01-09 21:59                                                                                           ` Harvey Harrison
2009-01-09 22:09                                                                                             ` Linus Torvalds
2009-01-09 22:13                                                                                               ` Harvey Harrison
2009-01-09 22:25                                                                                               ` Harvey Harrison
2009-01-10  0:53                                                                                                 ` Jamie Lokier
2009-01-10  1:04                                                                                                   ` Linus Torvalds
2009-01-10  1:13                                                                                                   ` Andi Kleen
2009-01-09 23:12                                                                                           ` Ingo Molnar
2009-01-09 23:24                                                                                             ` Linus Torvalds
2009-01-10  1:01                                                                                               ` Ingo Molnar
2009-01-10  1:06                                                                                                 ` Linus Torvalds
2009-01-10  1:20                                                                                                   ` Ingo Molnar
2009-01-10  1:34                                                                                                     ` Linus Torvalds
2009-01-10  1:08                                                                                                 ` Harvey Harrison
2009-01-10  1:30                                                                                                   ` Linus Torvalds
2009-01-10  5:03                                                                                                     ` H. Peter Anvin
2009-01-10  5:28                                                                                                       ` Linus Torvalds
2009-01-10  5:57                                                                                                         ` H. Peter Anvin
2009-01-11  0:54                                                                                                         ` Ingo Molnar
2009-01-12  1:56                                                                                                           ` Jamie Lokier
2009-01-12  8:40                                                                                                             ` Ingo Molnar
2009-01-10  1:18                                                                                                 ` Steven Rostedt
2009-01-10  1:39                                                                                                 ` Linus Torvalds
2009-01-10  1:41                                                                                                 ` Andrew Morton
2009-01-10  3:02                                                                                                   ` Andi Kleen
2009-01-11 12:26                                                                                                     ` David Woodhouse
2009-01-11 18:13                                                                                                       ` Andi Kleen
2009-01-11 19:25                                                                                                         ` Linus Torvalds
2009-01-11 20:14                                                                                                           ` gcc inlining heuristics was " Andi Kleen
2009-01-11 20:15                                                                                                             ` David Woodhouse
2009-01-11 20:34                                                                                                               ` Andi Kleen
2009-01-11 20:51                                                                                                                 ` Linus Torvalds
2009-01-11 23:05                                                                                                                   ` Linus Torvalds
2009-01-12  0:12                                                                                                                     ` Andi Kleen
2009-01-12  0:21                                                                                                                       ` Linus Torvalds
2009-01-12  0:52                                                                                                                         ` Andi Kleen
2009-01-12  1:20                                                                                                                           ` H. Peter Anvin
2009-01-12 18:06                                                                                                                           ` Bernd Schmidt
2009-01-12 19:02                                                                                                                             ` Linus Torvalds
2009-01-12 19:32                                                                                                                               ` Andi Kleen
2009-01-12 19:22                                                                                                                                 ` H. Peter Anvin
2009-01-12 19:45                                                                                                                                   ` Linus Torvalds
2009-01-12 23:01                                                                                                                                     ` Jamie Lokier
2009-01-12 23:19                                                                                                                                       ` Linus Torvalds
2009-01-12 19:42                                                                                                                                 ` Linus Torvalds
     [not found]                                                                                                                                 ` <alpine.LFD.2.00.0901121128080.6528@localhost.localdomain>
2009-01-12 20:08                                                                                                                                   ` Linus Torvalds
2009-01-12 22:03                                                                                                                                   ` Bernd Schmidt
2009-01-13  0:21                                                                                                                                     ` Linus Torvalds
2009-01-13  1:30                                                                                                                                       ` Steven Rostedt
2009-01-19  0:13                                                                                                                                     ` Ingo Molnar
2009-01-19  6:22                                                                                                                                       ` Nick Piggin
2009-01-19 21:01                                                                                                                                         ` Linus Torvalds
2009-01-20  0:51                                                                                                                                           ` Nick Piggin
2009-01-20 12:38                                                                                                                                             ` Ingo Molnar
2009-01-20 19:49                                                                                                                                               ` David Woodhouse
2009-01-20 21:05                                                                                                                                                 ` Ingo Molnar
2009-01-20 21:23                                                                                                                                                   ` Linus Torvalds
2009-01-20 22:05                                                                                                                                                     ` Ingo Molnar
2009-01-21  1:22                                                                                                                                                       ` H. Peter Anvin
2009-01-21  8:54                                                                                                                                                       ` Andi Kleen
2009-01-21  8:52                                                                                                                                                         ` Nick Piggin
2009-01-21  9:20                                                                                                                                                           ` Andi Kleen
2009-01-21  9:25                                                                                                                                                             ` Nick Piggin
2009-01-21  9:54                                                                                                                                                               ` Andi Kleen
2009-01-21 10:14                                                                                                                                                                 ` Nick Piggin
2009-01-20  4:20                                                                                                                                           ` Andi Kleen
2009-01-20 17:43                                                                                                                                           ` Miguel F Mascarenhas Sousa Filipe
2009-01-12 19:55                                                                                                                               ` Bernd Schmidt
2009-01-12 20:11                                                                                                                                 ` Linus Torvalds
2009-01-12  7:59                                                                                                       ` Hard to debug kernel issues (was Re: [PATCH -v7][RFC]: mutex: implement adaptive spinning) Chris Samuel
2009-01-10  6:44                                                                                                 ` [PATCH -v7][RFC]: mutex: implement adaptive spinning H. Peter Anvin
2009-01-09 21:46                                                                                       ` Linus Torvalds
2009-01-09 21:58                                                                                     ` Ingo Molnar
2009-01-09 21:15                                                                               ` Andi Kleen
2009-01-08 19:59                                                                         ` Harvey Harrison
2009-01-09  1:44                                                                           ` H. Peter Anvin
2009-01-09  2:24                                                                             ` Harvey Harrison
2009-01-09  5:05                                                                               ` H. Peter Anvin
2009-01-09  3:35                                                                             ` Andi Kleen
2009-01-09  3:42                                                                               ` Linus Torvalds
2009-01-09  6:57                                                                                 ` Andi Kleen
2009-01-09  6:00                                                                               ` Andrew Morton
2009-01-09  6:58                                                                                 ` Andi Kleen
2009-01-09 13:05                                                                               ` Chris Mason
2009-01-08 17:23                                                                   ` Peter Zijlstra
2009-01-07 22:54                                                       ` [PATCH -v5][RFC]: " Dave Kleikamp
2009-01-07 23:19                                                         ` Linus Torvalds
2009-01-07 23:49                                                           ` Steven Rostedt
2009-01-07 23:57                                                             ` Linus Torvalds
2009-01-08  2:18                                                               ` KAMEZAWA Hiroyuki
2009-01-08  2:33                                                               ` Steven Rostedt
2009-01-08  2:49                                                                 ` KAMEZAWA Hiroyuki
2009-01-08  6:52                                                             ` Andi Kleen
2009-01-08 14:24                                                               ` Steven Rostedt
2009-01-08 14:45                                                                 ` Andi Kleen
2009-01-07 21:37                                               ` Andi Kleen
2009-01-07 21:35                                                 ` Andrew Morton
2009-01-07 17:20                                           ` [PATCH -v4][RFC]: " Chris Mason
2009-01-07 17:50                                             ` Linus Torvalds
2009-01-07 18:00                                               ` Chris Mason
2009-01-07  3:57                                     ` [PATCH][RFC]: mutex: adaptive spin Lai Jiangshan
2009-01-07  6:32                                       ` Peter Zijlstra
2009-01-07  7:34                                         ` Lai Jiangshan
2009-01-07 13:35                                           ` Matthew Wilcox
2009-01-06 22:31                             ` Paul E. McKenney
2009-01-06 15:55                 ` Linus Torvalds
2009-01-06 16:11                   ` Linus Torvalds
2009-01-06 16:28                     ` Steven Rostedt
2009-01-06 16:40                     ` Linus Torvalds
2009-01-06 16:42                       ` Linus Torvalds
2009-01-06 17:02                         ` Ingo Molnar
2009-01-06 16:54                       ` Ingo Molnar
2009-01-06 16:56                         ` Ingo Molnar
2009-01-06 16:59                         ` Linus Torvalds
2009-01-06 16:19                   ` Chris Mason
2009-01-10 17:52                 ` Pavel Machek
2009-01-06 13:29               ` Nick Piggin
2009-01-06 16:23               ` Chris Mason
2009-01-06 17:08               ` Andrew Morton
2009-01-06 17:37                 ` Steven Rostedt
2009-01-06 18:02               ` Linus Torvalds
2009-01-06 18:20                 ` Steven Rostedt
2009-01-06 18:28                   ` Linus Torvalds
2009-01-06 18:25                 ` Linus Torvalds
2009-01-06 19:03                   ` Steven Rostedt
2009-01-05 14:34           ` Btrfs for mainline Chris Mason
2009-01-04  8:32 ` Gabor MICSKO
2009-01-05 14:35   ` Chris Mason
2009-01-05 15:01     ` Tomasz Torcz
2009-01-05 16:30       ` Chris Mason
2009-01-06 19:41 ` Chris Mason
2009-01-07  9:33   ` David Woodhouse
2009-01-07 18:45     ` Chris Mason
2009-01-08 20:15   ` jim owens
2009-01-11 23:34 ` Andrew Morton
2009-01-12 13:58   ` Chris Mason
2009-01-12 15:14     ` Miguel Figueiredo Mascarenhas Sousa Filipe
2009-01-12 15:17       ` Chris Mason

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=c62985530901070650x3264c6d5g14788c5440fe5d3@mail.gmail.com \
    --to=fweisbec@gmail.com \
    --cc=SDietrich@novell.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=chris.mason@oracle.com \
    --cc=ghaskins@novell.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthew@wil.cx \
    --cc=mingo@elte.hu \
    --cc=npiggin@suse.de \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=pmorreale@novell.com \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /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;
as well as URLs for NNTP newsgroup(s).