[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4F2445F6.4090201@colorfullife.com>
Date: Sat, 28 Jan 2012 20:01:10 +0100
From: Manfred Spraul <manfred@...orfullife.com>
To: Peter Zijlstra <a.p.zijlstra@...llo.nl>
CC: LKML <linux-kernel@...r.kernel.org>,
Andrew Morton <akpm@...gle.com>,
Thomas Gleixner <tglx@...utronix.de>,
Mike Galbraith <efault@....de>
Subject: Re: [PATCH 5/5] ipc/sem.c: alternatives to preempt_disable()
Hi,
On 01/24/2012 03:51 PM, Peter Zijlstra wrote:
> Yes I think it should work, and I'm afraid I have to agree with not
> being able to make the spinlock thing work properly. Even if you were
> to use arch_spin_* primitives you can still run into the 256 limit --
> although not from the preempt_count in that case. Nor would arch_spin_
> do what we need on -rt.
I've attached an updated patch, with the spinlock version removed.
But: I think the patch belongs into the -RT tree, not into mainline:
CONFIG_PREEMPT_RT_BASE does not exist in mainline.
Additionally, I'm not sure if the completion-scheme is also necessary
for CONFIG_PREEMPT_RT_FULL
Just to keep everything in perspective:
- if one thread is woken up, the duration of the preempt_disable() block
is 2.5 microseconds on my 2 GHz Phenom.
- the scaling is nearly linear, i.e. if 256 threads are woken up, then
the duration is something like 0.5 milliseconds.
But: I'm not aware of any application that uses sysv sem for bulk
wakeups.
--
Manfred
View attachment "0001-ipc-sem.c-Add-RT-compatible-wakeup-scheme.patch" of type "text/x-patch" (10389 bytes)
Powered by blists - more mailing lists