First test with your sugestions.
I am using Phyton program writen by me to add data to server.
Server is Centos 6.2 based (hardware described in my first post)
Python runs on separeate dual core PC with 1Gb connection to servers.
Servers are configured as N-way Multymaster

Test start    Test stop     Test duration          Num users    User/sec

19.4.2013   19.4.2013      sec 7789,00         1000000        128,39
11:53:45     14:03:34        min 129,8166667

Database location mounted as:
UUID=616c291a-7fe4-47a1-87d1-c221a8e1c4f8 /opt                    ext4    noatime,auto    1 2

vm.dirty_ratio = 90
vm.dirty_expire_centisecs = 60000

Scheduler is:
[root@spr1 ~]# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]

memory manager libhoard.so (latest from hoard site)

Database size 36GB

-rw-------. 1 openldap openldap 14471663616 Apr 19 12:01 data.mdb
-rw-------. 1 openldap openldap        8192 Apr 19 12:02 lock.mdb

[root@spr1 openldap-data]# du -hs data.mdb
14G     data.mdb


This is user data (one user). I can add 128,39 complete users in 1 second.

dn: uid=1,ds=USERS,o=STANDARD,dc=SPR
objectClass: sprUser
uid: 1

dn: subdata=userData,uid=1,ds=USERS,o=STANDARD,dc=SPR
roamingAllowed: TRUE
objectClass: sprUserData
subdata: userData
prepaidFlag: TRUE
sn: TestProv
pfUsername: user1
givenName: pcrfUser
loginPassword: 123
pfPassword: 123

dn: subdata=applicationData,uid=1,ds=USERS,o=STANDARD,dc=SPR
objectClass: sprUserData
subdata: applicationData

dn: ds=aaa,subdata=applicationData,uid=1,ds=USERS,o=STANDARD,dc=SPR
objectClass: sprDs
ds: aaa

dn: ds=2g3g,ds=aaa,subdata=applicationData,uid=1,ds=USERS,o=STANDARD,dc=SPR
objectClass: sprDs
ds: 2g3g

dn: ds=pcrf,ds=aaa,subdata=applicationData,uid=1,ds=USERS,o=STANDARD,dc=SPR
objectClass: sprDs
ds: pcrf

dn: subdata=2g3gProf,ds=2g3g,ds=aaa,subdata=applicationData,uid=1,ds=USERS,o=STA
 NDARD,dc=SPR
service2g3g: defaultService
profile2g3g: profile1
productCode2g3g: prodCode
barringStatus2g3g: barringStatus
objectClass: spr2g3gUser
uniqueId2g3g: user1
apnGroup2g3g: apnGG
provider2g3g: memyselveandi
framedIPAddress2g3g: 1.1.1.1
accountGroup2g3g: acctGroup
subdata: 2g3gProf
msisdn: 1234560001
flagStatus2g3g: flagStatus
class2g3g: classs
type2g3g: type
creationDate2g3g: 01.10.2010.
classification2g3g: 111
poolGroup2g3g: poolGroup
status2g3g: ACTIVE

dn: subdata=pcrfProf,ds=pcrf,ds=aaa,subdata=applicationData,uid=1,ds=USERS,o=STA
 NDARD,dc=SPR
profile: 3100
totalUsedVolume: 3
msisdn: 1234560001
objectClass: sprPcrfProf
totalMaximumVolume: 5
imsi: 1991234560001
subdata: pcrfProf
subscriberServiceProfile: TM00003100
featureList: Faeture1
paymentTypexy: NeverPaid
pfUsername: user1
tariffId: 1
pcrfServiceId: 3100

dn: pfUsername=user1,dc=USERNAME,dc=SPR
objectClass: alias
objectClass: extensibleObject
pfUsername: user1
aliasedObjectName: uid=1,ds=USERS,o=STANDARD,dc=spr

dn: msisdn=1234560001,dc=MSISDN,dc=SPR
objectClass: alias
objectClass: extensibleObject
msisdn: 1234560001
aliasedObjectName: uid=1,ds=USERS,o=STANDARD,dc=spr

dn: imsi=1991234560001,dc=IMSI,dc=SPR
objectClass: alias
objectClass: extensibleObject
aliasedObjectName: uid=1,ds=USERS,o=STANDARD,dc=spr
imsi: 1991234560001



On Fri, Apr 19, 2013 at 1:54 PM, Nick Milas <nick@eurobjects.com> wrote:
On 19/4/2013 2:00 μμ, Chris Card wrote:

I tried reducing the maxsize, but it made no difference to the performance.
So I'm still at the point where writes to BDB are roughly 4 times faster than writes to MDB.
Any more suggestions?

Could it be possibly related to the OS / filesystem used? Please provide details. System IO load?

Is OpenLDAP compiled by you or you are using a standard package? Which?

(I am not an expert on this, just trying to possibly consider other factors.)

Nick