1:1 threading.

Scott Long scott_long at btc.adaptec.com
Thu Mar 27 07:30:10 PST 2003


Daniel C. Sobral wrote:
> Max Khon wrote:
> 
>> hi, there!
>>
>> On Thu, Mar 27, 2003 at 12:34:29AM -0800, Terry Lambert wrote:
>>
>>
>>>>> After reading your 1:1 threading code, I think you needn't
>>>>> hack current KSE code to build your own 1:1 threading code.
>>>>> Our code allow you to do this, actully, it's my earlier
>>>>> idea to let 1:1 be implemented in our M:N code base, but never
>>>>> had told this to julian or others.
>>>>
>>>>
>>>> It was actually done outside of KSE on purpose.  It keeps the API 
>>>> simpler
>>>> and cleaner.  It keeps the implementation cleaner.  It keeps it out 
>>>> of the
>>>> majority of the KSE code paths aside from thread_suspend and related
>>>> code.
>>>>
>>>> I wanted something small and stable that built on top of KSE provided
>>>> primitives but did not actually use the KSE apis.  This makes it easier
>>>> for KSE to continue growing and changing while the 1:1 code remains
>>>> simple.  It also removes some of the cost associated with doing KSE.
>>>
>>>
>>> This isn't really a legitimate argument.
>>
>>
>>
>> Seconded. do you have numbers that clearly show that using Julian's 
>> approach
>> leads to serious performance penalty? Using KSE APIs is not that 
>> difficult
>> as far as I understand, so why we need to introduce more hacks?
> 
> 
> As much as I'd prefer the 1:1 threading to use as much of the KSE code 
> as possible, Jeff's decision wasn't related to performance issues.
> 
> What Jeff wanted to do is to _avoid_ using as much of the KSE API as 
> possible so his code wouldn't get in the way of that API, with two 
> obvious benefits:
> 
> 1) Changes to that API (and there have been some in the past) won't 
> affect his 1:1 threading code and, thus, won't upset real applications 
> using that threading.
> 
> 2) His 1:1 threading code won't slow down further KSE development nor 
> influence any changes to the KSE API.
> 
> The reason I personally prefer otherwise is so that (1) above won't be 
> true. Ie, any bugs or performance issues introduced in the KSE code 
> *will* affect real applications, so that they can be detected and fixed.
> 

Once 5-STABLE happens, users of 5.x can no longer be guinea pigs for KSE
development.  By keeping the 1:1 and M:N API's separate, KSE can
progress in 6-CURRENT until it is proven while still allowing MFC's to
5-STABLE to happen without too much pain.  Later on down the road when
KSE matures, or when we decide that 1:1 should really just be a special
case of M:N, we can look at addressing the above concerns and possibly
MFC'ing the results back to 5-STABLE.  But for now we need to allow for
5-STABLE to actually be usable and maintainable.

Scott



More information about the freebsd-arch mailing list