[Date Prev][Date Next]
Re: #15646 BerkeleyDB hybrid mutexes
Keith Bostic wrote:
On Oct 9, 2007, at 12:02 AM, Howard Chu wrote:
With a CPU-hog running in the background, the test with BDB 4.2.52
takes only 37 seconds, while BDB 4.6.21 takes 1:42. Watching with
top you can see that BDB 4.6.21 gets a lot less CPU than BDB
4.2.52. This is the problem with using yield() on an NPTL system -
whereas on most POSIX systems yield() only yields control to some
other thread in the current process, on NPTL yield() gives up the
CPU for the entire process.
Is there a call that would be preferable on NPTL?
What call on NPTL will only yield control from the thread, not the
When we first encountered this problem in the OpenLDAP source we used select()
with a zero timeout. But I recall that that performed poorly as well, and
nowadays we just avoid doing any type of yield at all. I think the real answer
here is that on Linux 2.6 you really just want to use the native mutex
(pthread, futex, whatever it's called) and not do anything else.
-- Howard Chu
Chief Architect, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/