Ubuntu – SMBD daemon spikes at 100% cpu usage when Windows 8 clients connect

server-message-blocksmb-confUbuntuwindows 8

I have a server running Ubuntu 12.04 running as a Samba server. The file system is an XFS formatted virtual drive on an LVM pool of physical drives.

I recently upgraded our clients to Windows 8 and I've noticed that there's a 6-8 second delay for the client connecting the SMB share on the Ubuntu server. With Windows 7, there is no such delay. On the Ubuntu server, the SMBD process spikes to 100% CPU usage for a few seconds during the initial connection to the share.

strace shows that smbd is opening /etc/passwd over and over again during that connection. My clients should be connecting as guests (no authentication).

open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 28
_llseek(28, 0, [0], SEEK_CUR)           = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
mmap2(NULL, 1568, PROT_READ, MAP_SHARED, 28, 0) = 0xb6de2000
_llseek(28, 1568, [1568], SEEK_SET)     = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
munmap(0xb6de2000, 1568)                = 0
close(28)                               = 0
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 28
_llseek(28, 0, [0], SEEK_CUR)           = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
mmap2(NULL, 1568, PROT_READ, MAP_SHARED, 28, 0) = 0xb6de2000
_llseek(28, 1568, [1568], SEEK_SET)     = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
munmap(0xb6de2000, 1568)                = 0
close(28)  
... repeats over and over ...

I'm aware that the SMB implementation in Windows 8 has been changed since Windows 7. Is there a change I can make to smb.conf that will resolve the issue with the spike in CPU usage?

Best Answer

I was able to resolve the delay with logging in from Windows 8 by making the following change in smb.conf:

encrypt passwords = yes