[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
tuning.
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
frames.
A clip from tcpdump during a transfer:
18:46:07.770734 192.168.1.169.1038 > 192.168.1.2.139: . ack 2375572 win
65535 (DF)
18:46:07.770942 192.168.1.169.1038 > 192.168.1.2.139: . ack 2378492 win
65535 (DF)
18:46:07.771002 192.168.1.2.139 > 192.168.1.169.1038: .
2385792:2387252(1460) ack 4719 win 5840 NBT Packet (DF)
18:46:07.771008 192.168.1.2.139 > 192.168.1.169.1038: .
2387252:2388712(1460) ack 4719 win 5840 NBT Packet (DF)
18:46:07.771013 192.168.1.2.139 > 192.168.1.169.1038: .
2388712:2390172(1460) ack 4719 win 5840 NBT Packet (DF)
18:46:07.771017 192.168.1.2.139 > 192.168.1.169.1038: .
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. :-)
Regards,
Andrew
More information about the samba
mailing list