[Samba] High CPU While Loading RSAT Active Directory Users and Computers

Dale Renton
Fri, 17 Nov 2017 14:46:14 -0000

Hello,

I'm trying to figure out a problem with our AD DC with the FSMO roles, name
DC1.  When starting the Windows RSAT Active Directory Users and Computers
program against DC1 it takes about 90 seconds to load.  A samba process on
the server is at 100% CPU while waiting for it to load.  Once loaded the
CPU goes back to normal.  When connecting the Active Directory Users and
Computers program against DC2 though it loads in a couple of seconds.  DC1
and DC2 are on two different identical physical servers with the same
config.  When running strace on the 100% CPU process, most of the time is
spent on the fcntl syscall.

CentOS 7
Samba 4.5.10

samba-tool dbcheck returns 0 errors
samba-tool dbcheck --cross-ncs returns 0 errors
samba-tool drs showrepl returns 0 failures

smb.conf :
[global]
    netbios name = DC1
    realm = AD.EXAMPLE.COM
    server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl,
winbindd, ntp_signd, kcc, dnsupdate
    workgroup = EXAMPLEAD
    server role = active directory domain controller
    idmap_ldb:use rfc2307 = yes
    # used for OpenLDAP sync
    password hash gpg key ids = ...........
    # temporary
    ntlm auth = yes

[netlogon]
    path = /usr/local/samba/var/locks/sysvol/ad.example.com/scripts
    read only = No

[sysvol]
    path = /usr/local/samba/var/locks/sysvol
    read only = No
    root preexec = /usr/local/samba/var/locks/sysvol/
ad.example.com/scripts/logonscript.py %U %I %a


strace -c -p 2053 returns :
strace: Process 2053 attached
strace: Process 2053 detached
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 96.49    0.169676           0    964777        13 fcntl
  1.74    0.003061          10       305           epoll_wait
  0.74    0.001302           0     10672           read
............


strace -p2053 returns hundreds of thousands of lines like this :

fcntl(12, F_SETLKW, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=1652100,
l_len=1}) = 0
fcntl(12, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=11368,
l_len=1}) = 0
fcntl(12, F_SETLKW, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=11368,
l_len=1}) = 0
fcntl(12, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=1652100,
l_len=1}) = 0
fcntl(12, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=11368,
l_len=1}) = 0
fcntl(12, F_SETLKW, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=11372,
l_len=1}) = 0
fcntl(12, F_SETLKW, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=17976160,
l_len=1}) = 0
fcntl(12, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=11372,
l_len=1}) = 0
fcntl(12, F_SETLKW, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=11372,
l_len=1}) = 0
fcntl(12, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=17976160,
l_len=1}) = 0
fcntl(12, F_SETLKW, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=2147760,
l_len=1}) = 0
fcntl(12, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=11372,
l_len=1}) = 0
................


Any thoughts ?

Thanks,
Dale