DragonFly BSD
DragonFly kernel List (threaded) for 2004-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: lkwt in DragonFly

From: Miguel Mendez <flynn@xxxxxxxxxxxxxxxxxx>
Date: Tue, 10 Feb 2004 10:56:39 +0100

Jeroen Ruigrok/asmodai wrote:

I prefer to go with a hybrid method. 1:1 doesn't work.

Could you elaborate on that? I agree that the prefered implementation is
something KSE/SA alike, but Solaris is moving to 1:1 after years of trying to make N:M work properly. The main problem I see with 1:1 threading is kernel memory usage on heavily threaded applications, but other than that? Implementation is a lot simpler than in the N:M case. The SA idea looks very good on paper until you start implementing and see it's actually pretty hard work to get it functioning properly.

I've got some papers I've been reading on threads lately which I'll
put in a follow-up tonight.

I assume you've read the Scheduler Activations, which is the basis for NetBSD's threading implementation.

Basically it shows that pure userland threads have pros and cons,
pure kernel threads have pros and cons and a hybrid mapping is the
best of both worlds on a number of areas.

Pure userland is fast, but if a thread blocks on i/o your entire process does. That seems to be the main rationale behind N:M designs. Having a threading system that doesn't have the contention of user->kernel switches for thread scheduling and, on the other side, be able to keep going when a thread blocks in a syscall.

	Miguel Mendez <flynn@xxxxxxxxxxxxxxxxxx>
	PGP Key: 0xDC8514F1

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]