dslreports logo
 
    All Forums Hot Topics Gallery
spc
Search similar:


uniqs
9236

subcultured
Premium Member
join:2001-08-21
Jamaica Plain, MA

subcultured to Crypto5

Premium Member

to Crypto5

Re: OS X client, linux server, samba pain.

said by Crypto5:
said by Daemon:

I can tell you it's not a fatal flaw in the SMB implementation in OSX. I have a Fedora box connected to a 10.4 machine (used to be 10.3), and it just flies.
Thats actually the most valuable data point I have gotten yet from this whole thing. That tells me that there might be something peculiar to the way this version of samba was compiled. Maybe it's time to compile it from scratch and see what happens.
I was the admin for about a hundred macs in my last job and we had several Fedora boxen running samba flawlessly to the macs and windows clients alike. We also had one Debian fileserver (can't remember which version...) that did indeed give us some serious problems with netatalk but actually worked very well using SMB.

Obviously there is some other issue with your server. Check that your macs, when sharing to windows/linux clients via samba, perform up to standard just to rule out an odd firewall issue. Regardless, I'd suggest rolling your own samba. It can't hurt...

Good luck,
Ian

Crypto5
Premium Member
join:2001-01-07
Saint Charles, MO

Crypto5 to MiloMindbend

Premium Member

to MiloMindbend
said by MiloMindbend:

Try this (on the OS X side):

'sudo sysctl -w net.inet.tcp.delayed_ack=0'
DING DING DING DING DING!! And we have a winner! that sped it right up.

You say that this should do the same thing as putting TCP_NODELAY on the Linux samba server? Thats odd, because I did that already and didnt seem to have any results.

It's certainly much, much faster with delayed acks set to 0 on the OS X box. What are the ramifications to just leaving the OS X box like that?
Crypto5

Crypto5

Premium Member

Problem solved. Culprit: Bad Linux NIC/Driver

Wow, after googling on the sysctl command milo posted here, I saw at least one instance of someone saying "I set this command on my BSD box because I was having problems with a realtek ethernet card that for some reason wasnt handling delayed ACKs well"

Well, I have a Linksys card, which had a realtek in it. So I shut down the venerable linux server thats been going for 5 years, and swapped out the linksys card with a spare Intel E100 I had.

I remmed out all the samba performance options I had tried, and set delayed acks back to 1 on the OS X box, and pulled a giant file down from the samba share.

And it hauled ass.

Thats damned near the strangest network problem I have ever seen in my life, and I have no way to explain it other than to chalk it up to bad linux driver code.

Thanks everyone, for their help, and specially thanks to Milomindbender for putting me on the right track.
MiloMindbend
join:2001-01-18
Jeannette, PA

MiloMindbend to Crypto5

Member

to Crypto5

Re: OS X client, linux server, samba pain.

said by Crypto5:

You say that this should do the same thing as putting TCP_NODELAY on the Linux samba server? Thats odd, because I did that already and didnt seem to have any results.
It effectively does the same thing _on the Mac_ that the smb.conf TCP_NODELAY does _on the Linux box_. But it was the Linux box that was pausing because the Mac wasn't sending an ack to every packet, so you have to disable the delayed acks on the Mac.

You're supposed to be able to set socketopts in ~/.nsmbrc (disabling delayed acks just for the smbfs kernel extension, rather than for the whole system), but I never got that to work (hmm, wonder if it has to be in /etc/nsmbrc instead, since mount_smbfs is suid root)...

Anyway, I run into it infrequently enough that I just twiddle the sysctl knob. It gets the job done.
MiloMindbend

MiloMindbend to Crypto5

Member

to Crypto5
said by Crypto5:

It's certainly much, much faster with delayed acks set to 0 on the OS X box. What are the ramifications to just leaving the OS X box like that?
Sorry, forgot to answer that one. If you leave it like that, nothing will break, but your other network traffic will be less than optimal, as TCP will send an ack for every packet instead of combining them and acking several packets at a time. So just evaluate your typical network usage (with the most emphasis on local, high-speed stuff) -- if it's mostly SMB to a server that doesn't deal well with delayed acks, I'd normally leave it disabled. If that's a small percentage of your overall usage, I'd leave it at it's default. Heck, you could always wrap it with an Automator script and assign a hotkey to it to switch on demand.
manifest4
bitches
join:2004-08-14
Hartford, CT

manifest4 to Crypto5

Member

to Crypto5

Re: Problem solved. Culprit: Bad Linux NIC/Driver

You know I should have realized this. Right around when I upgraded from 10.3 to 10.4 I also had to a motherboard replacement on my linux server. The NIC was also changed. I was using a realtek chipset and went to a 3com 3c905. Changing the nic must have done it for me as well.

z3r
@tuebingen.mpg.de

z3r to MiloMindbend

Anon

to MiloMindbend

Re: OS X client, linux server, samba pain.

Hi.

Thanks for posting---I'm very glad to find a workaround for this problem, which was killing transfer speeds between a FreeBSD samba server with an Intel NIC and my OS 10.4 Powerbook client.

I'd like to try the nsmbrc solution you mention (and it seems plausible to put it in the root .nsmbrc) but documentation about .nsmbrc and its syntax is hard to find. All I find on my system and by Google is an "example file" with a few commented-out lines that seem irrelevant to this problem.

How would you, in principle, disable delayed acks in a nsmbrc config file?

cheers, --jez
MiloMindbend
join:2001-01-18
Jeannette, PA

MiloMindbend

Member

Same sort of thing as in smb.conf, iirc: "options TCP_NODELAY"

I'd start by pulling the smbfs kext source from OpenDarwin, though, and see if it actually even reads the nsmbrc files -- it could very well not.

z3r
@tuebingen.mpg.de

z3r

Anon

Thanks. I guess you must be write about the file being ignored. Certainly, appending

socket options = TCP_NODELAY

to /private/var/root/.nsmbrc (and also, for good measure, copying the resulting file to my $HOME and temporarily doing chmod go+r on both copies) doesn't change the behaviour. Estimate of time taken to transfer 152MB: 1 hour.

I guess sysctl twiddling must remain the solution. Irritating, but not serious.
MiloMindbend
join:2001-01-18
Jeannette, PA

MiloMindbend

Member

said by z3r :

I guess sysctl twiddling must remain the solution. Irritating, but not serious.
Well, there is another option, if it's a big enough PITA for you (it wasn't a big enough itch for me to scratch, personally -- I only have limited interaction with SMB shares):

Download the smbfs.kext source, tweak the socket options, rebuild it, and replace the original .kext with it (I'd rename the old one, not delete it . That's one of the neat things about Darwin -- the core OS _is_ open...

deaDleSs balLoon
@spndigital.com

deaDleSs balLoon to Crypto5

Anon

to Crypto5
dont know if it's interesting for you guys, but i found that you can create file /etc/sysctl.conf (on mac of course) and put the following line in it:
net.inet.tcp.delayed_ack=0

It works fine!

PS Thanks for your wonderful advise, now my freebsd file server can serve macs too
deaDleSs balLoon

deaDleSs balLoon to Crypto5

Anon

to Crypto5
btw, i have an another problem, maybe you can help me...
mac users, when browsing samba share, cannot see full information about file ownership and permissions,
they only see: you can read an write
But they want to know who created file.
Any suggestions, what can i do for them to see that info?
jfgrissom
join:2002-07-10
San Diego, CA

jfgrissom to Crypto5

Member

to Crypto5
This sudo sysctl -w net.inet.tcp.delayed_ack=0
is Awesome!

My DL times from Suse9.2
(I know OpenSuse10 is out, and it is FREE! I'm upgrading I swear!)
SMB server to my Mac went from (this is no exageration)
90-150KB/sec to 900KB-1MB/sec.

It does look like it bursts though... (Hi speeds for 10 seconds -- sleep for 2 seconds -- hi speed again but that could be my slow Wifi-G connection)

It Also provides much much faster responce time if you wan to cancel transfers.
This is good stuff... has anyone seen it break anything?

Eatmeingreek
join:2001-06-29
San Francisco, CA

Eatmeingreek to Crypto5

Member

to Crypto5
Delayed ACK and TCP_NODELAY (disable Nagle's algorithm) are no the same thing. They do interact badly, however:

»www.port80software.com/2 ··· 317.aspx

That shouldn't have been the problem in this case, 'cause you had TCP_NODELAY set in your smb.conf

You might be on the right track with the Linux driver:

»www.scyld.com/rtl8139.ht ··· #8139too