[Samba] Marginal write performance & pauses in outgoing transfers - Possible bug

Nicolas Gieczewski nicolas at nixsoftware.com
Sat Jul 26 13:36:34 GMT 2003


Hello everybody,

I have a FreeBSD 4.8-STABLE server running Samba 2.2.8a and a workstation
running Windows 2000 SP4. Whereas FTP transfers between these boxes average
700 KB/s (10 mbps LAN) in both directions, Samba transfers are exhibiting
this odd behavior:

Windows 2000 --> Samba = 700 KB/s (perfect)
Samba --> Windows 2000 = 100 KB/s (terrible, inconsistent, with LONG pauses)

Trust me, I have tried *everything* I've run into as far as tuning goes,
so please don't ask if I've tuned up my stuff or request my configuration
file :)  If this were a configuration-related issue, performance should be
the same no matter in which direction data is transferred. Nevertheless,
I have really tried everything that exists. Furthermore, I remember I didn't
have this problem with certain older version of Samba before I upgraded
my ports (unfortunately I don't remember which version it was, but I don't
really want to downgrade).

The problem lies in the fact that outgoing transfers are not consistent and
undergo VERY long, random pauses. My hub's activity LED shows that, during
a transfer from Samba to Win2k, no packets are transferred about 70% of the
time. Yep, only during about 30% of the total time a transfer takes is there
actual network activity--the remaining 70% of the time is wasted on random
(both length-and interval-wise) pauses. When transferring the other way
around, though (Win2k --> Samba), it's just as fast as FTP (because I *do*
have my stuff properly tuned!), so fast in fact that it makes my hub's
excessive bandwidth alert LED go on ;)

All my network cards are propery configured, both media- and duplex- wise.
There are no collissions. I don't even know why I'm saying this, because the
rates I can achieve with FTP both ways alone proves that Samba is the
culprit.

Because most of the time a transfer takes to complete is wasted on those
random pauses, anything I could tune concerning buffer sizes and the like is
almost useless because it only takes effect while data is actually being
transferred, not during the pauses. I have fiddled with buffer sizes and, by
looking at the hub's activity light, I could (visually and easily) see how
more or less data was transferred in between the pauses depending on the
buffer sizes I chose. However, the pauses stayed consistent throughout all
my tests. By using larger buffer sizes, all I could do was push more data
through in between the pauses, but my tuning never affected the length or
interval of the pauses themselves. Buffer sizes are not the only thing I
fiddled with, and anyway, this was the same configuration file I had been
using with that older version of Samba that didn't have this problem, and
nothing changed in between.

And again, the pretty good rate (for a 10 mbps LAN) I can achieve in
the Win2k --> Samba scenario proves that there's nothing wrong with
my configuration.

Does anyone happen to know what could be causing this? I ran into a post
on the FreeBSD net mailing list posted a long time ago by someone who had
this same problem, but his difference between read and write performance
was much bigger, and that was an ancient version of Samba which had
certain wait flag turned on in the code. However, that was supposed to be
off by default in future versions.

Please advice!

Thanks in advance,

Nicolas Gieczewski
Nix Software Solutions
http://www.nixsoftware.com/




More information about the samba mailing list