On Thu, Feb 19, 2009 at 2:15 AM, Dieter Kluenter <dieter(a)dkluenter.de> wrote:
Brett Maxfield <brett.maxfield(a)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
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.