Skip site navigation (1)Skip section navigation (2)
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 Xu


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200608050806.24502.davidxu>