[Date Prev][Date Next]
I've done some futher investigation on this ITS and I've found out that it is
BerkeleyDB that is calling ldap_pvt_thread_yield() all the time (callback
registered in /servers/slapd/back-bdb/init.c). This is the cause of the high
CPU usage and the large amount of context switches (over 100K/sec!) I've
seen. I suspect there is some bdb locking problem going on. When I run
db_stat -c while performing the modify benchmark I see that "Total number of
locks not immediately available due to conflicts" is steadily increasing, I
am not sure if that is a serious issue. The "Number of deadlocks" is zero and
there are no signs of BDB running out of locks/lockers/lock objects.
I've also added some extra debug statements in /servers/slapd/back-bdb/idl.c
because from slapd's debug logging I saw that executing the function
bdb_idl_delete_key() took al lot of time, sometimes more than 15 seconds!
I'll try to continue with digging into this problem, but I am starting to run
out of ideas. Any ideas would be welcome!
PS I forgot to mention that I use BerkeleyDB 4.1.25p1 NC