Ok, I can see now that I didn't give you much information to work with.
Let me try to be a little more specific...
My hardware-setup is this: 2 pc's. 1 Linux FC4 server + 1 Windowx XP (client), connected through a switch. Gigabit capability everywhere
I did some further testing and I found a couple of things.
First, the server had a heating problem that made network performance go down. I opened the pc-case and had a huge fan blowing a whole lot of air right onto the motherboard. That helped a lot
Second, tweaking the socket options in smb.conf also helped. A little bit. I still can't get samba to transfer files as fast as FTP.
Speed-testing Samba and FTP (both ways) with some 1-2GB files gave me these results:
- Samba: FROM server (linux) TO client (windows): ~15MB/s. The speed is a little erratic over time (from ~2MB/s to ~25MB/s) but averages at about the 15MB/s.
- Samba: FROM client TO server: Fairly consistent speed at about 25/MBs.
- FTP: FROM server TO client: ~30MB/s. Again the speed is a little erratic (15-45MB/s).
- FTP: FROM client TO server: Again, fairly consistent speed at about 17MB/s.
Conclusion (with the current configuration):
Samba is best at uploading files TO the server.
FTP is best at downloading files FROM the server.
I'm no expert at configuring samba, so there's probably still something to be tweaked in my smb.conf. I have concentrated my own tweaking on the socket options and name resolve order (since I only have 2 pc's on the network and they have static (internal) IPs, I changed the search order to use the lmhosts file). Feel free to take a look at the file:
Code:
#======================= Global Settings =====================================
[global]
# workgroup = NT-Domain-Name or Workgroup-Name
workgroup = MyWorkgroup
# server string is the equivalent of the NT Description field
server string = Workgroup Server
#
hosts allow = 10.0.0. 127.
# if you want to automatically load your printer list rather
# than setting them up individually then you'll need this
printcap name = /etc/printcap
load printers = no
# It should not be necessary to spell out the print system type unless
# yours is non-standard. Currently supported print systems include:
# bsd, sysv, plp, lprng, aix, hpux, qnx
; printing = cups
# This option tells cups that the data has already been rasterized
cups options = raw
# Uncomment this if you want a guest account, you must add this to /etc/passwd
# otherwise the user "nobody" is used
; guest account = pcguest
# this tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/%m.log
# all log information in one file
# log file = /var/log/samba/log.smbd
# Put a capping on the size of the log files (in Kb).
max log size = 50
# Security mode. Most people will want user level security. See
# security_level.txt for details.
; security = user
# Use password server option only with security = server
; password server = <NT-Server-Name>
# Password Level allows matching of _n_ characters of the password for
# all combinations of upper and lower case.
; password level = 8
; username level = 8
# You may wish to use password encryption. Please read
# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
# Do not enable this option unless you have read those documents
; encrypt passwords = yes
; smb passwd file = /etc/samba/smbpasswd
# The following are needed to allow password changing from Windows to
# update the Linux system password also.
; unix password sync = Yes
; passwd program = /usr/bin/passwd %u
; passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
# Unix users can map to different SMB User names
; username map = /etc/samba/smbusers
# Using the following line enables you to customise your configuration
# on a per machine basis. The %m gets replaced with the netbios name
# of the machine that is connecting
; include = /etc/samba/smb.conf.%m
# Most people will find that this option gives better performance.
# See speed.txt and the manual pages for details
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384
# Configure remote browse list synchronisation here
# request announcement to, or browse list sync from:
# a specific host or from / to a whole subnet (see below)
; remote browse sync = 192.168.3.25 192.168.5.255
# Cause this host to announce itself to local subnets here
; remote announce = 192.168.1.255 192.168.2.44
# Browser Control Options:
# set local master to no if you don't want Samba to become a master
# browser on your network. Otherwise the normal election rules apply
; local master = no
# OS Level determines the precedence of this server in master browser
# elections. The default value should be reasonable
; os level = 33
# Domain Master specifies Samba to be the Domain Master Browser. This
# allows Samba to collate browse lists between subnets. Don't use this
# if you already have a Windows NT domain controller doing this job
; domain master = yes
# Preferred Master causes Samba to force a local browser election on startup
# and gives it a slightly higher chance of winning the election
; preferred master = yes
#
; name resolve order = wins lmhosts bcast
name resolve order = lmhosts bcast
# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server
; wins support = yes
# WINS Server - Tells the NMBD components of Samba to be a WINS Client
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
; wins server = w.x.y.z
# WINS Proxy - Tells Samba to answer name resolution queries on
# behalf of a non WINS capable client, for this to work there must be
# at least one WINS Server on the network. The default is NO.
; wins proxy = yes
# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
# via DNS nslookups. The built-in default for versions 1.9.17 is yes,
# this has been changed in version 1.9.18 to no.
dns proxy = no
#============================ Share Definitions ==============================
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /bin/false
winbind use default domain = no
username map = /etc/samba/smbusers
; encrypt passwords = yes
; guest ok = no
; guest account = nobody
[homes]
comment = Home Directories
browseable = no
writeable = yes
# NOTE: If you have a BSD-style print system there is no need to
# specifically define each individual printer
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# Set public = yes to allow user 'guest account' to print
; guest ok = no
; writeable = no
printable = yes
[me]
path = /home/me
writeable = yes
browseable = yes
valid users = me