Date: Sat, 5 Aug 2006 08:06:24 +0800 From: David Xu <davidxu@freebsd.org> To: freebsd-threads@freebsd.org Cc: John Baldwin <john@baldwin.cx> Subject: Re: system scope vs. process scope Message-ID: <200608050806.24502.davidxu@freebsd.org> In-Reply-To: <200608041134.43979.john@baldwin.cx> References: <20060804140657.GK4498@obiwan.tataz.chchile.org> <200608041134.43979.john@baldwin.cx>
index | next in thread | previous in thread | raw e-mail
On Friday 04 August 2006 23:34, John Baldwin wrote: > Suppose you have a system with 2 processes. One process is single-threaded > and is CPU bound. The other process has 2 threads both of which are also > CPU bound. If the threads in the second process are PTHREAD_SCOPE_SYSTEM, > then each thread will get 33% of the CPU. If the threads in the second > process are PTHREAD_SCOPE_PROCESS, then the each process will get 50% of > the CPU. The second process will then use its own algorithm to split it's > 50% of the CPU up between it's two threads. If it divides it evenly, then > each of its' threads will end up with 25% of the CPU whereas the thread for > the first process has 50% of the CPU. The idea for this is that if you > have a system with several single-threaded processes and one process with > 1000 threads, you don't want that process to starve out all the other > processes. > I can make my application fork 800 processes and starve out all the other user. > In practice things get much hairier, but suffice it to say that libpthread > manages the scheduling of PTHREAD_SCOPE_PROCESS threads in userland, > whereas libthr would have to depend on the kernel managing that. (To some > extent libpthread needs some help from the kernel to provide this as well.) The complete solution is FSS (fair sharing schedule) found in Solaris. David Xuhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200608050806.24502.davidxu>
