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

Re: NPTL writeup



On Sun, 22 Sep 2002, Dan Kegel wrote:

> I've added a little writeup on both NGPT and NPT to 
>   http://www.kegel.com/c10k.html#threaded
> and would appreciate any suggestions or corrections.

the following is only part of the story:

   NPT  uses  all  the  kernel  enhancements designed for NGPT, and takes
   advantage  of  a  few  new  ones  (for  instance, Rusty Russell's fast
   userspace mutexes (futexes)).

while NPT uses the three kernel features introduced by NGPT: getpid()  
returns PID, CLONE_THREAD and futexes; NPT also uses (and relies on) a
much wider set of new kernel features, developed as part of this project.

Some of the items NGPT introduced into the kernel around 2.5.8 got
modified, cleaned up and extended, such as thread group handling
(CLONE_THREAD). [the CLONE_THREAD changes which impacted NGPT's
compatibility got synced with the NGPT folks, to make sure NGPT does not
break in any unacceptable way.]

The kernel features developed for and used by NPT are described in the
design whitepaper, which btw. is linked incorrectly in your writeup:

	   http://people.redhat.com/drepper/nptl-design.pdf

a short list: TLS support, various clone extensions (CLONE_SETTLS,
CLONE_SETTID, CLONE_CLEARTID), POSIX thread-signal handling, sys_exit()
extension (release TID futex upon VM-release), the sys_exit_group()
system-call, sys_execve() enhancements and support for detached threads.

There was also work put into extending the PID space - eg. procfs crashed
due to 64K PID assumptions, max_pid, and pid allocation scalability work.
Plus a number of performance-only improvements were done as well.

in essence the new features are a no-compromises approach to 1:1 threading
- the kernel now helps in everything where it can improve threading, and
we precisely do the minimally necessery set of context switches and kernel
calls for every basic threading primitive.

	Ingo





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