Problem / Outcome Summary
- MAC OS network transfer speed is still broken in OS Sierra and Mojave (Workaround Provided at the bottom). What do we know so far?
Why might I want to read this?
- Because you’re frustrated that Windows is nearly twice as fast than Mac OS using any protocol
- Because you want to prove me wrong and show me what I can do to fix this problem in the comments below
What is the problem?
Mac OS (including up to Sierra) still appears to be failing miserably when it comes to network transfer speed. It is so bad that it is nearly half the speed of windows, which in turn means Mac OS takes nearly twice as long to copy files than windows. This isn’t fun, when you may have terrabytes of files to copy, translating into many extra hours of unnecessary copying time.
There is a lot of information out on the internet, and apple is typically quiet on the subject, one of the most frustrating aspects of Apple is that they basically never admit anything.
Also, while there are some small fixes out there, there is nothing that discusses the topic comprehensively. So I decided to have a look and try to figure out exactly where we stand.
First up, the test bed
For these tests, we used the following hardware.
- QNAP 669-L with 4.3.2 (beta) loaded
- Mac Mini (Late 2012) (I7 2.8GHz, 16GB RAM), Samsung 850EVO SSD
- GS116Ev2 – 16-Port Gigabit ProSAFE Plus Switch
- 4x Seagate ST4000VN000-1H4168 4TB NAS drives (RAID-5)
- 2x Hitachi HDS723020BLA642 2TB Enterprise drives (RAID-0)
- Mac OS Sierra 10.12.2
- Windows 10
- CAT 5E Cable
Next up, the problem
So what actual speeds do we get in the ‘out of the box’ experience?
Unfortunately the out of the box experience for Mac OS is not good. Basically, Mac OS tops out at about 20MB/s vs Windows 10 consistently transfers a reliable and blazing fast 110MB/s. It goes without saying that this is quite a gap in out of the box performance. And this is not very nice considering how much it costs to get a Mac these days.
Right, so what should we test?
For this exercise I thought we should isolate where the problem is by testing server side tweaks, how it realtes on Windows vs Mac OS, try different network protocols and isolate hardware.
Also, to eliminate differing hardware, BOOTCAMP was used (that is, Windows was installed on the same MAC hardware, dual boot).
The tests (and their results) were as follows:
Mac OS Sierra, copy from RAID-0 to local SSD using SAMBA (Jumbo Frames On) and changing NAS SMB settings as below:
- SMB v2.0 no async 20MB/s
- SMB v3.0 no async 17MB/s
- SMB v2.0 async i/o 22MB/s
- SMB v3.0 async i/o ?
Windows 10 (Bootcamp), copy from RAID-0 to local SSD disk using native samba, jumbo frames on and changing NAS SMB settings as below:
- SMB 2.0 – 110 MB/s async
- SMB 2.1 – 110 MB/s async
- SMB 3.0 – 110 MB/s async
Mac OS, copy from RAID-0 to local SSD disk using native AFP
- AFP – 50MB/s (no jumbo frames)
- AFP – 55MB/s (jumbo frames)
Mac OS, copy from RAID-0 to local SSD disk using NFS
- NFS 60MB/s with jumbo frames
These results don’t look good for the MAC. Around the internet, it was mentioned that if you disable the overhead of the client signing on the MAC, you can get a large speed increase. To do this you simply place a file in the /etc directory as below. This file does not exist and needs to be created.
File name: nsmb.conf
The result was:
- SMB 3.0 48 MB/s async
So this was a huge improvement for SMB, but still trailing behind NFS, AFP and most noteably windows 10’s impressive 110MB/s
So what does the above tell us?
- The issue above is 100% in software. This is clear because Windows 10, installed on the very same Mac Mini hardware achieves a massive 110MB/s.
- This issue is 99% likely caused not just in software, but specifically in the Mac OS software
- The server side (NAS) tweaks help, but not by much
- The client side tweaks help the most, the best by far being to disable client signing.
What next? What should we do about it?
Currently, there appears to be no fix, nor any recognition that an issue exists. Since this is almost definitely in the implementation of apples software or associated kernel modules / drivers the best thing would be to let apple know. If you are enrolled in a beta program with Apple, please log a bug for each version of the OS that this still happens in – that’s what I will be doing. Otherwise, you’re stuck with the apple communites here.
If you’re planning on doing any large copies in Mac OS, I’d recommend doing them in windows instead. It’s just faster. If you’ve got Linux skills, you could try that too of course.
That’s what I’ll be doing.
As always, we welcome your insights and opinions in the comments section below. And I’d be particularly pleased to be proven wrong, (given I’d like this sorted out for my Mac at home), but provided that this can be replicated in our test setup, or isolated to be a different issue I haven’t thought of.
Happy new year everyone.
Workaround (Jan 2019)
I accidentally stumbled upon a workaround for me when copying large amounts of data, which is simply to use NFS but the trick is to mount it via the command line. So while not perfect in the sense of an everyday driver (I certainly don’t want to do this manually each time), it does work if you need to copy a lot of data as a one time thing. Surprisingly I’m getting sustained speeds of 110MB/s which is the fastest I have ever seen on any of my Macs while running Mac OS. Note that this is in Mac OS Mojave version 10.14.1.
Hope this helps someone out there!