Re: [PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-10 Thread Ulrich Drepper
Pierre Peiffer wrote: > Here are the average latencies after 5000 measures. > [...] Use something more realistic. I suggest using the Volano benchmark under your favorite JVM. I found it to be quite representative and you get a nice number you can show. -- ➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 44

Re: [PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-10 Thread Ulrich Drepper
Pierre Peiffer wrote: > But there can be a performance impact when several processes use > different futexes which have the same hash key. > In fact, the plist contains all waiters _of_all_futexes_ having the same > hash key, not only the waiters of a given futex. This can be more a > problem, s/c

Re: [PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-10 Thread Daniel Walker
On Wed, 2007-01-10 at 17:29 +0100, Pierre Peiffer wrote: > > > > Is this really necessary? The rtmutex will priority sort the waiters > > when you enable priority inheritance. Inside the wake_futex_pi() it > > actually just pulls the new owner off another plist inside the the > > rtmutex structur

Re: [PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-10 Thread Pierre Peiffer
Daniel Walker a écrit : On Tue, 2007-01-09 at 17:16 +0100, Pierre Peiffer wrote: @@ -1358,7 +1366,7 @@ static int futex_unlock_pi(u32 __user *u struct futex_hash_bucket *hb; struct futex_q *this, *next; u32 uval; - struct list_head *head; + struct plist_head *

Re: [PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-10 Thread Daniel Walker
On Tue, 2007-01-09 at 17:16 +0100, Pierre Peiffer wrote: > @@ -1358,7 +1366,7 @@ static int futex_unlock_pi(u32 __user *u > struct futex_hash_bucket *hb; > struct futex_q *this, *next; > u32 uval; > - struct list_head *head; > + struct plist_head *head; >

Re: [PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-10 Thread Pierre Peiffer
Yes, I agree with all, that was what I have in mind too. And by registering all SHED_OTHER threads with the same priority MAX_RT_PRIO, we have exactly this behavior, I think : * the plist, when used with only one priority, behaves exactly as a simple list (plist is a double simple list: first

Re: [PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-10 Thread Jakub Jelinek
On Wed, Jan 10, 2007 at 12:47:21PM +0100, Pierre Peiffer wrote: > So, yes it (logically) has a cost, depending of the number of different > priorities used, so it's specially measurable with real-time threads. > With SCHED_OTHER, I suppose that the priorities are not be very distributed. > > May

Re: [PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-10 Thread Pierre Peiffer
Pierre Peiffer a écrit : Ulrich Drepper a écrit : I have never seen performance numbers for this. If it is punishing existing code in a measurable way I think it's not anacceptable default behavior. May be, supposing it makes sense to respect the priority order only for real-time pthreads,

Re: [PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-10 Thread Pierre Peiffer
Ulrich Drepper a écrit : I have never seen performance numbers for this. If it is punishing existing code in a measurable way I think it's not anacceptable default behavior. Here are some numbers. My test program measures the latency of pthread_broadcast with 1000 pthreads (all threads are

Re: [PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-09 Thread Daniel Walker
On Tue, 2007-01-09 at 17:16 +0100, Pierre Peiffer wrote: > @@ -133,8 +133,8 @@ struct futex_q { >* Split the global futex_lock into every hash list lock. >*/ > struct futex_hash_bucket { > - spinlock_t lock; > - struct list_head chain; > + spinlock_t

Re: [PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-09 Thread Ulrich Drepper
Pierre Peiffer wrote: > This patch makes use of plist (pirotity ordered lists) instead of simple > list in > futex_hash_bucket. I have never seen performance numbers for this. If it is punishing existing code in a measurable way I think it's not anacceptable default behavior. -- ➧ Ulrich Dreppe

[PATCH 2.6.20-rc4 1/4] futex priority based wakeup

2007-01-09 Thread Pierre Peiffer
Hi, Today, all threads waiting for a given futex are woken in FIFO order (first waiter woken first) instead of priority order. This patch makes use of plist (pirotity ordered lists) instead of simple list in futex_hash_bucket. --- futex.c | 66 +++