Subject: Re: Please Revert newlock2
To: None <tech-kern@netbsd.org>
From: Matt Thomas <matt@3am-software.com>
List: tech-kern
Date: 02/18/2007 11:41:35
On Feb 18, 2007, at 11:22 AM, Perry E. Metzger wrote:
>
> Bucky Katz <bucky@picovex.com> writes:
>>> 2) Either cause them to perform acceptably for your application,
>>> or else
>>> endeavor to get M:N back in a supported state for uniprocessors.
>>
>> It has to be the later. The context switch overhead of 1:1 on ARM
>> will
>> cause a severe performance degradation.
>
> I'm not sure about that. The experience of Solaris and other unices
> has been that a tuned 1:1 isn't that bad, whereas M:N is very hard to
> make work correctly. It might be easier to tune 1:1 for ARM than to
> make M:N work correctly again. A little effort spent on speeding up
> the system call path and the scheduler could pay off quite handsomely.
Note that we can have a M:N without SAs. Any time a pthread sleeps
inside libpthread due to a timed sleep, a blocked mutex, or waiting
on a condition there is no reason why that pthread needs a LWP behind
it. That's why we have the new LWP syscalls _lwp_park and
lwp_unpark. The more LWPs a process has, hopefully, the less likely
that a large will be runnable at any one time.
One thing we are missing right now (as far as I can tell) is a way to
have processor affinity for a LWP. While affinity shouldn't normally
be used, sometimes it is required.