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 implementation.
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.
Cheers Brett