[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
test008-concurrency timings
Out of curiosity I got execution times for running the tester in
test008-concurrency with various back-ldbm/back-bdb settings. I ran the
tests with slapd debug set to 0, otherwise the debug log file output
could skew the results. Otherwise the script is just modified by adding a
"time" command in front of the $TESTER invocation.
For back-ldbm, the results were fairly consistent:
real 4m11.254s real 4m3.924s
user 0m0.550s
sys 0m0.440s
(Since the work is done in forked children, only the real time is of
interest.)
For back-bdb, no options
real 8m14.361s real 7m56.679s
user 0m0.640s
sys 0m0.550s
back-bdb, dbnosync
real 7m31.627s real 8m29.101s
user 0m0.750s
sys 0m0.430s
There appears to be no real value one way or another to this option. I think
the point is that the transaction log *must* get flushed sooner or later in
order for subsequent transactions to proceed.
back-bdb, dbnotxn
real 4m47.651s real 5m28.831s
user 0m0.700s
sys 0m0.460s
This trades transaction semantics (locking on a per-operation basis) for
N-readers/1-writer semantics (locking per-database). Probably not a great
idea in general use, but it provides a reference point for the other
results. Theoretically, this ought to be about the same as regular
back-ldbm.
back-bdb, dirtyread
real 4m8.588s real 5m17.011s
user 0m0.690s
sys 0m0.410s
This is a pretty significant improvement, putting back-bdb with transactions
back on par with back-ldbm's performance. What's interesting is that it can
be at least as fast or even faster than no transactions at all.
back-bdb, dirtyread, dbnosync
real 3m3.770s real 3m31.418s
user 0m0.670s
sys 0m0.640s
The real kicker - combining dirtyread with the otherwise useless dbnosync
gets the best performance of all. Of course, you have no assurances that a
committed transaction made it onto the disk, but that's true for the
back-ldbm case here too. (back-ldbm is configured with dbnosync in this
test.)
It seems to me we should roll in both the DB_DIRTY_READ and DB_TXN_NOSYNC
behaviors for the "dbnosync" config keyword, and forget the other options.
-- Howard Chu
Chief Architect, Symas Corp. Director, Highland Sun
http://www.symas.com http://highlandsun.com/hyc
Symas: Premier OpenSource Development and Support