[Samba] Win2k - samba-2.2.8a - can't get above 4MB/sec

Andrew Kohlsmith akohlsmith-samba at benshaw.com
Mon Jul 28 00:35:19 GMT 2003

I'm trying to maximize throughput between my Samba server and my Win2k (SP3 
and 4) clients. Samba's configured to allow up to 64k packets and the 
server is on a GigE network (3com card, acenic driver) with SCSI UW2 drives 
(software RAID1 and RAID5 volumes). All clients are 100MB/sec FDX on a 
switched LAN. 
I can get sustained 35MB/sec transfers (read and write) on the disk 
subsystem so I know that's not a limiting factor. (not bad for software 
RAID, SCSI UW2 max theoretical throughput is 40MB/sec!) 
I have read the various TCP/IP and throughput tuning documentation for Win2k 
(and WinNT) found on various sites, including MSDN and the MSKB. My maximum 
window size is 128k, MTU is 1500 (well auto-discover but packet traces show 
that this is where it was autonegotiated at)... TCP window scaling is on 
and so on and so forth... I don't need TCP/IP tuning, I need CIFS and NBT 
No matter what I do I can't get Win2k to give up limiting the maximum NBT 
packet size to the MSS. All NBT packets (coming or going) max out at 1460 
bytes and all packets have the DF bit set. I have extra CPU to spare so I'd 
like to have 64k NBT packets that are fragmented to fit into the ethernet 

A clip from tcpdump during a transfer:
18:46:07.770734 > . ack 2375572 win 
65535 (DF)
18:46:07.770942 > . ack 2378492 win 
65535 (DF)
18:46:07.771002 > . 
2385792:2387252(1460) ack 4719 win 5840 NBT Packet (DF)
18:46:07.771008 > . 
2387252:2388712(1460) ack 4719 win 5840 NBT Packet (DF)
18:46:07.771013 > . 
2388712:2390172(1460) ack 4719 win 5840 NBT Packet (DF)
18:46:07.771017 > . 
2390172:2391632(1460) ack 4719 win 5840 NBT Packet (DF)
I've also read that CIFS can work "raw" (i.e. outside of NBT) but I'm not 
sure how to do it or if it'll help.

Testing with NFS and FTP has shown that I can hit 9.6MB/sec with larger 
packets, but am stuck down around 4MB/sec with these measly 1-2k packets. I 
am pretty sure it's not a Samba-side issue because if I start four or five 
transfers from different workstations I can easily aggregate their 
individual transfer speeds and get 20MB/sec on the GigE interface.  I am 
drawing up blanks so I'm hoping one of the samba gurus can help here.  :-)
What I've done so far:
- read over Speed.txt and Speed2.txt
- tried compiling with sendfile and enabling it in smb.conf
- tried -DUSE_MMAP (and turning read raw off)
- setting the maxrecvsize registry parameter (and rebooting)
- probably a few more things I've forgotten.  :-)


More information about the samba mailing list