 MiloMindbend
join:2001-01-18 Jeannette, PA
| reply to z3r Re: OS X client, linux server, samba pain.
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... |
|
  z3r
@mpg.de
| reply to MiloMindbend 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 | reply to z3r 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
@mpg.de
| reply to MiloMindbend 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
| reply to Crypto said by Crypto :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.  |
|