1:1 threading.
Daniel Eischen
eischen at pcnet1.pcnet.com
Fri Mar 28 12:34:51 PST 2003
On Fri, 28 Mar 2003, Jeff Roberson wrote:
> On Fri, 28 Mar 2003, Daniel Eischen wrote:
>
> > On Fri, 28 Mar 2003, Daniel C. Sobral wrote:
> >
> > > David Xu wrote:
> > > >
> > > > do you think that a multithreaded process should use more CPU time then
> > > > a single thread process, so threaded process should have higher priority
> > > > and block other single thread processes out? AFAIK, threading is not
> > > > designed for this, you may misunderstand what threading is designed for.
> > >
> > > Threading might not have been originally designed for this, but a lot of
> > > people use it this way, a lot of people *want* it this way, and POSIX
> > > specifically mandates that this way be available.
> >
> > It is available through pthread_attr_setscope().
> >
> > There's some confusion over this and the way libthr is implemented.
> > KSE's within the same KSE Group were not designed to give more CPU
> > time than a normal unthreaded/single KSE'd process. Unless this
> > has been changed in the kernel somehow, the use of multiple KSEs
> > by libthr or libkse (in a single KSEG) will not get any more CPU
> > time than a non-threaded program. There was some debate over
> > this, but multiple KSEs within a KSEG were _not_ suppose to allow
> > this. You are suppose to create a new KSEG in order to get
> > this behavior.
> >
>
> This is not how it is implemented in either scheduler that we currently
> have. I'm not saying which way is more or less correct because I think
> you could argue either way. We can not entirely correctly implement
> SCOPE_PROCESSES threads right now anyway.
Well, since we have KSEGs, I'd argue that this is a bug.
Perhaps it was too difficult to do this and no-one thought
you'd ever allow more KSEs in a KSEG than you have CPUs,
so that became the limiting factor.
> This being said.. It is a property of the thr system calls and not
> libthr. I have a flags field in thr_create() that could be used to
> indicate which scope the thread should contend in.
BTW, I'm not arguing about libthr implementation here. I'm
just stating what a KSE is (was) suppose to be (which implicitly
describes libthr and libkse behavior).
--
Dan Eischen
More information about the freebsd-arch
mailing list