[Samba] This old tune again : read performance optimisations
Emmanuel Florac
eflorac at intellique.com
Thu Mar 22 10:49:44 MDT 2012
Hi list,
I have this problem of (relatively) poor samba read performance. Read
performance is constantly, reproducibly lower than write performance
and I can't really understand why.
Here is the server configuration :
dual octocore Opteron 6128, 32 GB RAM
Adaptec 6445 RAID card
36x 2TB Hitachi SATA drives (raid 60)
Sustained local disk throughput: over 850 MB/s write, over 1.4 GB/s
read.
kernel 3.1.10 (but I tried various versions with no more
success), amd64, pure vanilla kernel.org version.
Distro Debian squeeze amd64, samba 2:3.5.6~dfsg-3squeeze5
The client is an opteron dual core machine running Win7 64 bits. This is
by far the best performing CIFS client I've tested, software wise (see
below).
The systems are connected in 10GigE ethernet using Myricom Myri-10G
dual ports (only one port used) through a Fujitsu 10GigE switch.
I first tested the same client to the same server using Linux (same
configuration as the server) and netperf, then NFS, then cifs mount.
Netperf (TCP_SENDFILE test) gives more than 9500 Mb/s both direction, so
the network hardware works OK.
NFS gives the following results both in UDP and TCP modes:
Sustained throughput: 490 to 520 MB/s write, 620 to 650 MB/s read.
The linux CIFS client running on the same machine writes at a puny 180
MB/s and read at a miserable 75 MB/s. OK, never mind, samba is for
windows clients, right?
Now, the same machine rebooted under windows 7 writes at 450 MB/s,
which is close enough to NFS performance, but can't top 400 MB/s
reading. Read performance *should* be higher. I've played with various
parameters; I can get better write performance at times, on par with
NFS, but I never at any time remotely get as good a read performance.
I'd really like to get this beast tamed at last :)
Here comes the smb.conf file :
[global]
name resolve order = wins lmhosts host bcast
socket options = TCP_NODELAY
interfaces = eth2
bind interfaces only = yes
aio read size = 1
aio write size = 1
aio write behind = yes
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n
*Retype\snew\sUNIX\spassword:* %n\n . encrypt passwords = true
passdb backend = tdbsam
unix password sync = false
passwd program = /usr/bin/passwd %u
winbind separator = +
winbind enum users = yes
winbind enum groups = yes
winbind cache time = 10
idmap gid = 10000-20000
idmap uid = 10000-20000
obey pam restrictions = yes
preserve case = yes
short preserve case = yes
inherit acls = yes
nt acl support = yes
dns proxy = no
inherit permissions = yes
load printers = no
printcap name = /dev/null
disable spoolss = yes
printing = cups
invalid users = root
local master = no
domain master = no
preferred master = no
workgroup = WORKGROUP
syslog only = no
os level = 20
security = user
max log size = 1000
load printers = no
guest account = nobody
# wins support = no
# wins server = 127.0.0.1
template shell = /bin/false
server string = %h server (Samba %v)
syslog = 0;
panic action = /usr/share/samba/panic-action %d
block size = 4096
[nas]
writeable = yes
public = yes
path = /mnt/raid
--
------------------------------------------------------------------------
Emmanuel Florac | Direction technique
| Intellique
| <eflorac at intellique.com>
| +33 1 78 94 84 02
------------------------------------------------------------------------
More information about the samba
mailing list