[Date Prev][Date Next]
--On Monday, January 09, 2006 7:00 PM -0800 Howard Chu <email@example.com>
Kurt D. Zeilenga wrote:
At present, we only replace sched_yield(2) on Linux as
the replacements are non-portable. If other operating
systems are known to have problem sched_yield(2)
implementations, I suggest filing a separate ITS with
details and suggested replacement.
Sigh... select() seems to be about 5-6x slower than HAVE_NANOSLEEP on my
Linux 2.6 system with current HEAD. Not sure why I didn't see such a
drastic difference before, but it's quite noticable on test008 and
test039. Perhaps the added Bind load pushed it over a threshold...
nanosleep(2) should work on Solaris (at least 8, 9 and 10) as well.
Okay, I've committed a basic detection code for
REPLACE_SCHED_YIELD as well as updated replacement
code. Currently uses select(2), but can be switched
I've only tested on FreeBSD4 where this is a no-op.
Now pushing to a Linux box for real testing.
I started benchmarking on OpenLDAP 2.3.17 tonight. I found that on
Solaris, there was no change in performance over previous OpenLDAP
releases. However, I found that on linux, performance on just the prime
job (which doesn't measure the full performance of the server, just loads
the cache) had dropped from approximately 1500 searches/second to 100
searches/second (15X reduction in speed).
Changing portable.h to #undef REPLACE_BROKEN_YIELD brought performance back
I then tested
#define REPLACE_BROKEN_YIELD 1
This also brought performance back up.
So some part of this change likely needs to be reverted, and is also likely
the cause of the performance issue reports seen on -software.
Packaged, certified, and supported LDAP solutions powered by OpenLDAP: