libkse and SMP (was Re: USB bulk read & pthreads)
Daniel Eischen
eischen at pcnet1.pcnet.com
Fri May 23 13:22:32 PDT 2003
On Fri, 23 May 2003, Terry Lambert wrote:
> Daniel Eischen wrote:
> > This is just because rtld-elf is not thread safe (or written
> > so that locks are not needed as you claim).
>
> No. There is plenty of code that falls into this category; as
> soon as you finish fixing rtld, you will reveal other problems.
> Mark my words; you cannot make user space thread safe for all
> eventualities, with the user process never having to know
> anything about mutexes that the pthreads model expects the user
> program to hold in order to ensure against race conditions.
We can easily correct for dlfoo() being called by
different threads concurrently, so I don't include
that in being "thread-safe".
As it stands now, rtld-elf is not thread-safe even
without calls to dlfoo().
> > > The second of these is that the libkse model is M:N, with N being
> > > defaulted to 1. If you want more kernel threads, you have to ask
> >
> > N is defaulted to the number of CPUs that you have. Libkse
> > will create as many KSEs as there are CPUs (or whatever
> > kern.threads.virtual_cpu is set to); these will be KSEs
> > that run scope process threads. Scope system threads
> > get their own KSE/KSEG pair without regard to number of
> > CPUs or kern.threads.virtual_cpu.
> >
> > Trying to exceed the number of CPUs with kern.threads.virtual_cpu
> > will not work unless you also set kern.threads.debug=1. You
> > really shouldn't need to do this, but we use it for testing
> > and debugging.
>
> This is handy to know; so basically, my expectation from
> reading the code around PTHREAD_SCOPE_SYSTEM was correct:
> a single CPU system with PTHREAD_SCOPE_PROCESS (the default)
> can still get itself blocked in the kernel by a single
> blocking call (as in the USB bulk read device issue).
If I am reading you correctly, then no. Scope process
threads will block in the kernel, but upcalls will be
made to the originating KSE and new threads will be
scheduled.
--
Dan Eischen
More information about the freebsd-hackers
mailing list