Unsolved
This post is more than 5 years old
2 Posts
1
17004
Improving OSX SMB I/O speed.
Disclaimer: Our Isilon system was setup by a third party, and kinda handed it to me out of the blue. I'm working to fix some of the issues (no failover nic for the infiniband backend.) but it's a WIP.
So we want to be able to use SMB as our primary sharing protocol so we can do Windows & OSX sharing, along with production group passwords, auditing, ect.
Right now we're sharing /ifs/isilon as both SMB and NFS using Impersonate-overrides to fix UID/GID issues between the two. (I know, I hate it) Unfortunately 40mbps isn't acceptable to the OSX users and I'd like give them a decent speed using SMB. (NFS runs about the same as Windows/SMB speeds, but creates a lot of extra issues... but that's another discussion.)
Anyway, So our OSX machines have terrible SMB speed something 30%-45% of Windows Users, which for the longest time I assumed was because of Apple's poorly written version of SMB. But with Mavericks, there's no excuse right? Apple says, "SMB2 is superfast, increases security, and improves Windows compatibility." but I see no real evidence of this, unless they consider 40mbps "superfast."
Relevant Configuration.
And each node is configured with Bonded 4x 1GB ethernet ports,
And now the benchmarking -- All Benchmarking is done with Blackmagic Disk Speed Test, being a decent cross-platform option for measuring read/write speed.
Windows 7 Read / Write speed
Single Bond, 103MBps, which is pretty good. Something like 825mbps, pretty healthy connection speed for single gigabit Ethernet.
OSX Mountain Lion 7 Read / Write speed
Single Bond. Half the speed of windows.
OSX Lion DUAL BOND.
Double the bandwidth, no real speed improvement....
OSX Mavericks Read / Write.
No real improvement, surprising considering they're using SMB2 now, I would expect something at least CLOSER to Windows read/write.
KennySabarese
36 Posts
0
October 24th, 2013 15:00
This is unfortunate, but what seems to be the norm for Apple when it comes to "enterprise" support. They've never put a lot of effort into the network protocols, even NFS.
I know we are doing some internal testing at Isilon so I would hope can find out what's going on here and try to resolve it. What I would be interested in is seeing a Mac to Mac SMB2 test. Apple is deprecating AFP so if there is speed to be found with any tweaking you'd think they'd at least have those options set between two Macs.
grufftech1
2 Posts
0
October 24th, 2013 17:00
I can do a Mac>Mac transfer test tomorrow to see if that somehow performs better.
NFS is decent in terms of speed, but does not play well at all with Finder, which leaves it as a fairly unusable option as well.
KennySabarese
36 Posts
0
October 28th, 2013 04:00
I just ran into this Arstechnica article about SMB performance, but it's over wireless so not that relevant.
Mavericks fully fixes 802.11ac transfer speeds in OS X | Ars Technica
Also looks like there are issues with the SMB2 implementation... no surprise...
http://cammodude.blogspot.com/2013/10/os-x-109-mavericks-workaround-for-smb.html
dynamox
2 Intern
2 Intern
•
20.4K Posts
0
October 29th, 2013 07:00
we tried this in our environment and it had absolutely no impact in our environment. Not just for connectivity to Isilon but to VNX as well.
peglarr
99 Posts
0
October 29th, 2013 07:00
Many have found it extremely useful to disable TCP delayed acks on the Mac side. This is a tried and true method to significantly increase SMB throughput for Mac clients.
sudo sysctl -w net.inet.tcp.delayed_ack=0
is your friend :-) If you want to save this across reboots, you (Mac admins) know what to do.
peglarr
99 Posts
0
October 29th, 2013 08:00
Indeed, and that's why I said many environments, not all. If your workload isn't throughput-constrained, and/or your network is already heavily congested, you may not see any improvement, since the negative interaction between Nagle and delayed acks (200 ms delay) isn't a bottleneck.
But I can cite cases where the throughput went from 30 MB/sec to well over 300 MB/sec with just this change for a given stream from a given Mac (10 GE network)
Dan_Stranathan
3 Posts
0
October 29th, 2013 11:00
Keep in mind that OS X's SMB client stack is FreeBSD's smbfs.
http://www.apple.com/opensource/
I have done some basic traces during testing on OS X 10.9 (13A603) Mavericks and I can confirm that it is using SMB2.
RobertMcNeal
13 Posts
0
October 30th, 2013 09:00
Here's what I am seeing over a single 1GbE connection from a Mac Pro running 10.9 to a 1GbE interface (standard MTU 1500) on a 5 node X200 cluster running OneFS 7.0.2.4:
Here's what I am seeing over a ATTO FastFrame 10GbE NIC in the same Mac Pro to a 10GbE interface with jumbo frames enabled on the same 5 node X200 cluster:
Both tests were run without any special tuning performed to Mac OS 10.9.
What are the Win 7 and 10.9 clients that are being used in your test? Can you provide some detail on the hardware configuration and network topology for the test? Do you have an open Support Request for this issue?
Peter_Sero
1.2K Posts
0
October 31st, 2013 03:00
Robert,
that looks almost NFS-ish to me...
Can you post the relevant lines (for that client) from
isi statistics client --long
so we can see how these impressive numbers are achieved
(i.e. in terms of ops, transfer sizes and latencies)?
Thanks
-- Peter
Dan_Stranathan
3 Posts
0
October 31st, 2013 06:00
According to the EMC/Isilon product compatibility resources, OS X 10.9 Mavericks isn't officially supported at this time.
Can someone show me information proving otherwise? I can't deploy 10.9 into production until Isilon/EMC signs off.
I'm surprised that EMC employees like Peglarr are discussing a non-supported OS without a disclaimer.
RobertMcNeal
13 Posts
0
October 31st, 2013 11:00
Peter, here is the output for the 1GbE connection:
X200-3# isi statistics client --long --remote_addrs=10.25.9.58
TimeStamp NumOps Ops InMax InMin In InAvg OutMax OutMin Out OutAvg TimeMax TimeMin TimeAvg Node Proto Class UserId UserName LocalAddr LocalName RemoteAddr RemoteName
s N/s B B B/s B B B B/s B us us us
1383242030.2 1.2K 239.2 524K 287K 120M 503K 84 84 20K 84.0 10466 1763 4862.3 1 smb2 write * UNKNOWN 10.25.9.88 10.25.9.88 10.25.9.58 10.25.9.58
Here is the output for the 10GbE connection:
Disclaimer: Mac OS 10.9.0 is a new release from Apple and not fully tested for enterprise deployments. Do not try this at home!
Peter_Sero
1.2K Posts
0
November 1st, 2013 04:00
Great, so the data gets written in SMB(2) packets of 503KB in both cases!
(That's independent from the network MTU, like 1500B or 9000B =Jumbo.)
Consequently, the Ops rates are 240/s and 410/s resp., resulting
in the observed throughputs.
With the shown latencies (4.9ms and 2.8ms) the throughputs cannot go
much higher, as Ops x latency (= "channel utilization")
is already about 1 (means 100%) in both cases.
These scenarios might serve as a reference for other setups,
where findings can differ in several ways:
1) If the packet size is small, say 60KB or less, then the negotiation
between server and client would need to be carefully observed...
For example, it is usually negatively affected by SMB packet signing.
2) If much higher latencies are seen, one should
look at the server situation first (e.g. CPU load, disk IOPS).
3) If the "channel utilization" (Ops x average latency)
is much lower than 1.0 (or 100%), then the Isilon cannot to much
about it: The client is somehow unable to keep the server "busy".
Increasing network memory buffer sizes might help, for example.
Further observations are welcome!
-- Peter
BernieC
76 Posts
0
November 1st, 2013 17:00
I'd love to see a support case for this, so we can dig in a bit more. I agree with everything that everybody has said here. I would suggest setting net.inet.tcp.delayed_ack to 2 instead of 0 as it seems to perform just as well as 0 (in my testing) and it's what OS X server sets by default.
Testing my 10.9 client against a 6.5.5 cluster, I see SMB2 writes going to the cluster that are only 61440 bytes, but on 7.0.2.4, I see 512KB writes. I suspect the same is true for the reads, but I haven't tested that (yet). What I see in a quick packet capture is that the Max Transaction, Max Read, and Max Write Size on 6.5.5 is reported at 64KB in the initial negotiate protocol response. On 7.0.2, it's 1MB. So, the newer version supports much larger writes, or would appear to.
I'm curious if we respond similarly to a Windows 7 client that connects to 6.5.5.
Please private message me if you do have a support case open. This would cause a fairly large difference in performance for SMB2 Macs connecting to OneFS 6.5.x.
BernieC
76 Posts
1
November 2nd, 2013 16:00
Even though the server responds that the max read and write size is 64KB, Windows 7 batches multiple reads and writes together in order to get higher throughput. I saw 10 reads all sent to the server at the same time on my client; your mileage may vary. I saw 2 writes usually sent within quick succession from my Win7 VM client (admittedly, it's not really the fastest client, so something on faster hardware might behave differently/better).
The Mac, however, appears to behave much like it has in the past. It reads and writes only one chunk of data at a time, and it's not even really going up to the maximum read/write size the server supports when contacting OneFS 6.5.5 or 7.0.2. This behavior is going to limit the amount of data it can get from the cluster, while Windows 7's SMB stack really shines.
It looks like there may be some hope, though. Like I saw, and Robert demonstrated, when the Mac contacts an Isilon OneFS 7.x server, the server supports SMB 2.1's "large MTU" feature which puts the maximum read and write sizes much higher (1MB). At least for the write test I did, the Mac was writing at 512KB at a time, a nice 8x increase over OneFS 6.5.5.
So, for the highest SMB2 performance on the Mac, I'd recommend going to the latest OneFS 7.0.2 maintenance release. OneFS 7.1 will also soon be an option.
KennySabarese
36 Posts
0
November 6th, 2013 03:00
Hey guys, just ran into this article on the net regarding SMB2 performance.
They mention a tuning parameter:
max protocol = smb2
in yoursmb.conf
Looks like it's a tuning parameter for the SERVER, not the client, but wanted to throw it out there incase it can help anyone.
http://blog.backcovesoftware.com/post/66125194865/benchmarking-samba-2-on-os-x-10-9-mavericks