ldbadd --no-sync implications?

Michael Wood esiotrot at gmail.com
Thu Mar 3 04:04:01 MST 2011


On 3 March 2011 11:54, Michael Wood <esiotrot at gmail.com> wrote:
[...]
> What's a good way to add a bunch of users in a reasonably short amount
> of time while not causing other operations to be impacted too badly?
> Would it help if I set up another Samba box and replicated from one to
> the other?

By the way, using ldbadd --nosync to add 1000 users took around 1.5
minutes.  The strace output was strange...

I normalised various calls and counted them:

[...]
    396 brk(0xNNN) = 0xNNN
   2005 read(N, "XXX", N) = N
   2016 munmap(0xNNN, N) = N
   2021 mmap(NULL, N, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, N) = 0xNNN
   2032 fstat(N, {st_mode=S_IFREG|0644, st_size=N, ...}) = N
   2034 open("XXX", O_RDONLY) = N
   2039 close(N) = N
   2169 read(N, "XXX"..., N) = N
   2456 pwrite(N, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., N, N) = N
   3019 open("XXX", O_RDONLY) = -1 ENOENT (No such file or directory)
   3220 fcntl(N, F_SETLKW, {type=F_RDLCK, whence=SEEK_SET, start=N, len=N}) = N
  37533 fcntl(N, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=N, len=N}) = N
  40751 fcntl(N, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=N, len=N}) = N

Is it expected to have around 40 locks and unlocks per entry added?

Also:
$ grep -c 'open("/etc/krb5.conf"' ldbadd.strace
2002

Why would it need to open the krb5.conf file twice per added user?

Another thing I found strange was the pwrite(N, "BBBBBBBB"..., N, N)
calls.  Those "Bs" were not cause by me normalising the strace output.
 They were actually like that originally.

If this is all just because of the old version of samba 4 I'm using,
that's great :)  I'll just upgrade.  But is this likely?

Thanks.

The strace output looked something like this:
[...]
open("/usr/local/samba/private/sam.ldb.d/DC=EXAMPLE,DC=COM.ldb",
O_RDWR|O_CREAT, 0666) = 6
[...]
mprotect(0x7f3ded952000, 4096, PROT_READ) = 0
open("/dev/urandom", O_RDONLY)          = 9
read(9, "\346J$0\363\27!\366\203}\227\231\225)\303A", 16) = 16
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
open("/root/.krb5/config", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/krb5.conf", O_RDONLY)        = 10
fstat(10, {st_mode=S_IFREG|0644, st_size=3799, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f3df5f61000
read(10, "[libdefaults]\n\tdefault_realm = B"..., 4096) = 3799
read(10, "", 4096)                      = 0
close(10)                               = 0
munmap(0x7f3df5f61000, 4096)            = 0
open("/usr/local/samba/etc/krb5.conf", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/root/.krb5/config", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/krb5.conf", O_RDONLY)        = 10
fstat(10, {st_mode=S_IFREG|0644, st_size=3799, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f3df5f61000
read(10, "[libdefaults]\n\tdefault_realm = B"..., 4096) = 3799
read(10, "", 4096)                      = 0
close(10)                               = 0
munmap(0x7f3df5f61000, 4096)            = 0
read(9, "\305\366!-\201%\245\312C\35g\212\322\272Pj", 16) = 16
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
open("/root/.krb5/config", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/krb5.conf", O_RDONLY)        = 10
fstat(10, {st_mode=S_IFREG|0644, st_size=3799, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f3df5f61000
read(10, "[libdefaults]\n\tdefault_realm = B"..., 4096) = 3799
read(10, "", 4096)                      = 0
close(10)                               = 0
munmap(0x7f3df5f61000, 4096)            = 0
open("/usr/local/samba/etc/krb5.conf", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/root/.krb5/config", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/krb5.conf", O_RDONLY)        = 10
fstat(10, {st_mode=S_IFREG|0644, st_size=3799, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f3df5f61000
read(10, "[libdefaults]\n\tdefault_realm = B"..., 4096) = 3799
read(10, "", 4096)                      = 0
close(10)                               = 0
munmap(0x7f3df5f61000, 4096)            = 0
[...]
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
open("/root/.krb5/config", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/krb5.conf", O_RDONLY)        = 10
fstat(10, {st_mode=S_IFREG|0644, st_size=3799, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f3df5f42000
read(10, "[libdefaults]\n\tdefault_realm = B"..., 4096) = 3799
read(10, "", 4096)                      = 0
close(10)                               = 0
munmap(0x7f3df5f42000, 4096)            = 0
open("/usr/local/samba/etc/krb5.conf", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/root/.krb5/config", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/krb5.conf", O_RDONLY)        = 10
fstat(10, {st_mode=S_IFREG|0644, st_size=3799, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f3df5f42000
read(10, "[libdefaults]\n\tdefault_realm = B"..., 4096) = 3799
read(10, "", 4096)                      = 0
close(10)                               = 0
munmap(0x7f3df5f42000, 4096)            = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
brk(0x2c8b000)                          = 0x2c8b000
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
read(0, "", 4096)                       = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
[lots more lock/unlock calls snipped]
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
brk(0x2cde000)                          = 0x2cde000
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
munmap(0x7f3dec356000, 20951040)        = 0
brk(0x2d03000)                          = 0x2d03000
brk(0x2d24000)                          = 0x2d24000
brk(0x2d48000)                          = 0x2d48000
brk(0x2d6d000)                          = 0x2d6d000
brk(0x2d92000)                          = 0x2d92000
brk(0x2db7000)                          = 0x2db7000
brk(0x2ddc000)                          = 0x2ddc000
brk(0x2e01000)                          = 0x2e01000
brk(0x2e27000)                          = 0x2e27000
brk(0x2e4d000)                          = 0x2e4d000
[...]
brk(0x396d000)                          = 0x396d000
mmap(NULL, 33521664, PROT_READ|PROT_WRITE, MAP_SHARED, 6, 0) = 0x7f3deb759000
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
[lots more lock/unlock calls and a few brk()s skipped]
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
munmap(0x7f3df5d98000, 884736)          = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=168, len=0}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=1}) = 0
ftruncate(6, 33521664)                  = 0
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13406208) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13414400) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13422592) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13430784) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13438976) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13447168) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13455360) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13463552) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13471744) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13479936) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13488128) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13496320) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 13504512) = 8192
[lots more pwrite("BBBB...") skipped]

pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 8192, 33509376) = 8192
pwrite(6, "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"..., 4096, 33517568) = 4096
fstat(6, {st_mode=S_IFREG|0600, st_size=33521664, ...}) = 0
munmap(0x7f3deb759000, 13406208)        = 0
mmap(NULL, 33521664, PROT_READ|PROT_WRITE, MAP_SHARED, 6, 0) = 0x7f3dea42a000
fcntl(8, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=168, len=0}) = 0
fcntl(8, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=8, len=1}) = 0
fcntl(7, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=168, len=0}) = 0
fcntl(7, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=8, len=1}) = 0
brk(0x2c6a000)                          = 0x2c6a000
utime("/usr/local/samba/private/sam.ldb.d/DC=EXAMPLE,DC=COM.ldb", NULL) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=168, len=0}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=8, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=0, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=8, len=1}) = 0
fcntl(6, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=168, len=40000}) = 0
fcntl(6, F_SETLKW, {type=F_RDLCK, whence=SEEK_SET, start=40168, len=0}) = 0
fstat(6, {st_mode=S_IFREG|0600, st_size=33521664, ...}) = 0
munmap(0x7f3dea42a000, 13406208)        = 0
mmap(NULL, 33521664, PROT_READ|PROT_WRITE, MAP_SHARED, 6, 0) = 0x7f3de90fb000
brk(0x2d2d000)                          = 0x2d2d000
mmap(NULL, 1540096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x7f3df5dcb000
mremap(0x7f3df5dcb000, 1540096, 1925120, MREMAP_MAYMOVE) = 0x7f3df18d6000
mremap(0x7f3df18d6000, 1925120, 2408448, MREMAP_MAYMOVE) = 0x7f3df168a000
mremap(0x7f3df168a000, 2408448, 3145728, MREMAP_MAYMOVE) = 0x7f3df168a000
mremap(0x7f3df168a000, 3145728, 3932160, MREMAP_MAYMOVE) = 0x7f3df168a000
mremap(0x7f3df168a000, 3932160, 4915200, MREMAP_MAYMOVE) = 0x7f3df11da000
mremap(0x7f3df11da000, 4915200, 6144000, MREMAP_MAYMOVE) = 0x7f3df11da000
mremap(0x7f3df11da000, 6144000, 7680000, MREMAP_MAYMOVE) = 0x7f3df11da000
mremap(0x7f3df11da000, 7680000, 9601024, MREMAP_MAYMOVE) = 0x7f3de87d3000
mremap(0x7f3de87d3000, 9601024, 12001280, MREMAP_MAYMOVE) = 0x7f3df0f3a000
mremap(0x7f3df0f3a000, 12001280, 15003648, MREMAP_MAYMOVE) = 0x7f3de82ac000
mremap(0x7f3de82ac000, 15003648, 18755584, MREMAP_MAYMOVE) = 0x7f3de70c9000
mremap(0x7f3de70c9000, 18755584, 23445504, MREMAP_MAYMOVE) = 0x7f3de70c9000
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=48, len=1}) = 0
[lots more lock/unlocks skipped]
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=48, len=1}) = 0
munmap(0x7f3de70c9000, 23445504)        = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=168, len=0}) = 0
fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=1}) = 0
utime("/usr/local/samba/private/sam.ldb.d/DC=EXAMPLE,DC=COM.ldb", NULL) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=168, len=0}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=8, len=1}) = 0
fcntl(6, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=0, len=1}) = 0
fcntl(5, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=168, len=0}) = 0
fcntl(5, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=8, len=1}) = 0
munmap(0x7f3ded954000, 22302720)        = 0
close(8)                                = 0
munmap(0x7f3deee99000, 32808960)        = 0
close(7)                                = 0
munmap(0x7f3de90fb000, 33521664)        = 0
close(6)                                = 0
munmap(0x7f3df1aac000, 3149824)         = 0
close(5)                                = 0
fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 24), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f3df5f61000
write(1, "Added 1000 records with 0 failur"..., 35) = 35
close(4)                                = 0
close(3)                                = 0
exit_group(0)                           = ?

-- 
Michael Wood <esiotrot at gmail.com>


More information about the samba-technical mailing list