Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Mar 2003 12:57:10 -0800 (PST)
From:      Julian Elischer <julian@elischer.org>
To:        Daniel Eischen <eischen@pcnet1.pcnet.com>
Cc:        arch@freebsd.org
Subject:   Re: 1:1 threading.
Message-ID:  <Pine.BSF.4.21.0303281253080.52134-100000@InterJet.elischer.org>
In-Reply-To: <Pine.GSO.4.10.10303281526180.16659-100000@pcnet1.pcnet.com>

next in thread | previous in thread | raw e-mail | index | archive | help


On Fri, 28 Mar 2003, Daniel Eischen wrote:

> 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).

I'm happy to see the limit of (NKSEs !> NCPU) lifted for processes that
are in some way identified as 1:1 mode processes..
I don't want to lift it for KSE mode processes however.

For system scope threads, I guess you just allocate a separate KSEGRP
so it has somewhere to store pertinent info.

that makes it rather simple
system scope threads have a thread, a KSE and a KSEGRP
process scope threads just use the existing KSEGRP.

Everythiong should just "fall out correctly" by doing this..


> 
> -- 
> Dan Eischen
> 
> _______________________________________________
> freebsd-arch@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0303281253080.52134-100000>