[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: 2.4.14 prerelease call for testing #2

On Thu, Feb 19, 2009 at 2:15 AM, Dieter Kluenter <dieter@dkluenter.de> wrote:
> Brett Maxfield <brett.maxfield@gmail.com> writes:
> > Doesnt "currently asm" indicate asm spinlocks.. Which can be unreliable. These can be even more unreliable with unpatched bdb?
> >
> > So perhaps you should try posix style semaphores.. Forcing posix/pthreads both at compile time and at run time..
> db-4.7.25 has been build with --enable-posixmutexes
> --enable-pthread_api

I use ../dist/configure --disable-java --enable-posixmutexes
--with-mutex=POSIX/pthreads --enable-largefile --enable-cxx

--with-mutex=POSIX/pthreads is important as it selects posix mutex at
runtime, not compile time.

If i remember above was also the workaround for before 4.7 patch #3
was released, which would cause asm to be selected by the selection
algorithm and it was asm spinlocks which had the bug.

On solaris at least, i think POSIX/pthreads is better as the thread
library is pretty good (IMHO) but i suspect newer Linuxes will have
good POSIX/pthreads also.. the BDB library makes debatable choice of
asm at runtime even if the platform has a good pthreads

I think on multi-threaded platform, spinlocks are non-optimal as there
are more possible race conditions and consumtion of large numbers of
locking / locker objects with openldap using asm spinlocks.. it is
probably fine / optimal for single threaded use though.