rtprio and kse

Daniel Eischen eischen at vigrid.com
Mon Jun 30 06:30:15 PDT 2003


On Sun, 29 Jun 2003, Julian Elischer wrote:
> On Mon, 30 Jun 2003, Petri Helenius wrote:
> > > The rtprio() call affects the KSEG in which the thread runs.
> > > So it is the KSEG that has the realtime priority, and all
> > > threads that run in that KSEG will be affected.  This doesn't
> > > affect other KSEGs, so if you are creating system scope
> > > threads (each has their own KSEG and KSE), they will only
> > > be affected if you call rtprio() from their threads.
> > > 
> > So if I interpret this correctly, to achieve the "expected" result,
> > one should link with -lthr, not -lkse? Expected result being 
> > priorities apply only to threads which call for it. 
> 
> yes and no..
> That's only YOUR expectation..
> 
> if your thread is a "scope-process" thread then you cannot expect your
> thread to go to rt priority without effecting the priority of the rest
> of the group it is a part of. That's what the process-scope part
> means... The thread's priority is only relevant within teh process as a
> whole and doesn;t effect it's priority vs other processes.
> 
> Your thread is only scheduled within the scope of the process it is a
> part of. if the process is not at rt priority, then the thread cannot
> really be..  If your thread is "system scope" then each thread can have
> an independent priority from the system's point of view.
> 
> If you link with libthr you are specifying that all threads are "scope
> system" threads. in libkse you get a choice of which you want.

Actually, doesn't libthr create new KSE's within the same KSEG?
Perhaps this has changed, but unless libthr creates new KSEGs
then all threads would be affected by kernel priority changes.

> So to answer your original point..
> if you want "scope system" threads and a system-wide scheduling priority
> then you need to ask for that.. but.. that;s expeceted.
> Note.. asking for a new thread to be "scope system" is something that 
> I leave to Dan to tell you about :-)
> 
> > 
> > Does -lthr have any (known) issues with spinlocks like linuxthreads has, where
> > a thread with rtprio going into a spinlock might monopolize the CPU
> > and the other thread never gets a quantum to actually release the lock?
> 
> probably. it's a programmer error to do that..

This is the implementation he's talking about.  Use of true
spinlocks can cause a deadlock.  Libpthread doesn't use spinlocks
so it doesn't have this problem.  There may be problems with
the kernel's use of spinlocks though...

-- 
Dan Eischen



More information about the freebsd-threads mailing list