Thread (19 messages) 19 messages, 6 authors, 2009-01-10

Re: [PATCH -v7][RFC]: mutex: implement adaptive spinning

From: Peter Zijlstra <peterz@infradead.org>
Date: 2009-01-09 18:16:04
Also in: linux-fsdevel, lkml

Possibly related (same subject, not in this thread)

On Fri, 2009-01-09 at 11:44 -0500, Steven Rostedt wrote:
When we get to the schedule() it then needs to be a:

	preempt_enable_no_resched();
	schedule();
On that note:

Index: linux-2.6/kernel/mutex.c
===================================================================
--- linux-2.6.orig/kernel/mutex.c
+++ linux-2.6/kernel/mutex.c
@@ -220,7 +220,9 @@ __mutex_lock_common(struct mutex *lock, 
 		__set_task_state(task, state);
 
 		/* didnt get the lock, go to sleep: */
+		preempt_disable();
 		spin_unlock_mutex(&lock->wait_lock, flags);
+		preempt_enable_no_resched();
 		schedule();
 		spin_lock_mutex(&lock->wait_lock, flags);
 	}

actually improves mutex performance on PREEMPT=y
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help