11

I am inheriting a Windows 2012 R2 Server that is experiencing abysmal SMB/CIFS performance for Mac OS X Clients in particular. The server is doing file services and is an Active Directory Domain Controller (one of two for the domain). It is the PDC emulator. The other domain controller is a Windows 2003 Server.

The client side environment is a mix of Windows 7 and Mac OS X 10.9 Mavericks machines. All machines are on the same physical and logical gigabit LAN. Windows 7 users experience performance within expectations. Mac OS X 10.9 Mavericks clients experience abysmal performance including: slow directory listing, traversal, file reads, and file writes. There appears to be a significant asymmetry in read/write performance where write performance is significantly slower.

We have tried forcing the OS X Clients to use SMBv1 and CIFS, as opposed to the newer SMBX/SMB2 implementation. The issue persists for all versions. We have also installed Thursby DAVE for testing. There is slight alleviation of the listing/traversal performance, but it is still unacceptably slow.

I mounted a share and used dd to read /dev/random and write a 1GB text file to the share. Write performance was .33 Mbps. I ran tcpdump during the write to capture the communications.Please excuse the lack of formatting - I cannot seem to back tick escape this block:

EDIT I enabled NFS Server for Windows Server and mounted on a Mac OS X client. I conducted the same dd test captioned above with similar results/performance.


15:45:45.221337 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], ack 102, win 32767, options [nop,nop,TS val 1279665835 ecr 242798971], length 0
15:45:45.221546 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 1:501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500WARNING: Packet is continued in later TCP segments
SMB PACKET: SMBwriteX (REQUEST)
15:45:45.221547 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 501:1001, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221547 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 1001:1501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221547 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 1501:2001, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221548 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 2001:2501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221548 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 2501:3001, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221549 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 3001:3501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221549 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 3501:4001, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221550 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 4001:4501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221550 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 4501:5001, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221551 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 5001:5501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)

EDIT

  1. What next troubleshooting steps might I take to isolate a potential cause?
  2. Can anything be derived from the above captioned tcpdump?
  3. Are there any suggested network performance tuning recommendations to alleviate the performance issues described?
  • 2
    What's your specific question? – ewwhite Jul 14 '14 at 17:53
  • @ewwhite Added specific questions inline. – sardean Jul 14 '14 at 18:00
  • 3
    Have you seen discussions.apple.com/message/23576276 ? There's three suggestions, one at the end about connecting using the address cifs://server/share from coffeecoffee11, one about changing the MTU value in the middle of the page by userofalltrades, and an interesting test about trying it over wired instead of wireless, higher up. Also discussions.apple.com/thread/5500165?start=45&tstart=0 suggestion about NetBIOS over TCP / port 445 on Windows from joewebdms. – TessellatingHeckler Jul 14 '14 at 18:09
  • 2
    Regarding @Newt's comment, connect to the share from the affected client and run this from the server: Get-SmbSession | fl cli*,d*. Dialect is the SMB version. – charleswj81 Jul 21 '14 at 0:59
  • 2
    Also, can you run Iperf between the Mac and 2012 an 2003 servers to eliminate (or not) SMB as the issue as opposed to the the network or something else. – charleswj81 Jul 21 '14 at 1:02
1

Try disabling SMB 3.0 on the server and see if performance improves. Disabling SMB 3.0 isn't a great idea, especially if the server is running as a store point for Hyper-V VMs or SQL data stores, but you might get away with it if you're using it in a fairly basic way.

Detect, enable and disable SMBv1, SMBv2, and SMBv3 in Windows and Windows Server | Microsoft Support

1

This link helped me a lot: Integrate Macs into a Windows Active Directory domain | TechRepublic

It basically states that you need to modify the Directory Services Settings on the Macs. Go to System Preferences/Users & Groups and click Login Options. Click the edit button for Network Account Server and then "Open Directory Utility" Modify the settings to suit your needs.

Double click "Active Directory" and go to Advanced Options:

  • "Force local home directory on startup disk" will "force the creation of a profile on the local HDD for all users"
  • "Use UNC path from Active Directory to derive network home location" check and select protocol used - smb
  • "Mappings, which pertains to specifying unique GUIDs for certain attributes used within ADDS to identify a computer object account. OS X will generate these at random by default when bound to the domain; however, you may wish to use a particular set as generated by your enterprise admin."
0

I would have added a comment, but I can't. I don't have any ideas for you to try, but what I wanted to tell is that a co-worker of mine had recently setup a new OSX server with pretty much all the clients OSX. He too had some weird issues with file shares like performance and the clients not being able to open certain files off the network drives from the OSX server. We ended up buying a support contract from Apple to help him out and they told him to have the users download the files, they wanted to work on, locally to their Mac do their work and copy it all back...

Seeing this made me think the new OSX has something wrong with the way it is accessing network shares.

0

Setting these two registry keys helped me drastically improve windows share performance for Macs on Windows Server 2012 and Windows 8.1

win_share_tweak.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
"Smb2CreditsMin"=dword:00000300
"Smb2CreditsMax"=dword:00004000
0

Some of the reasons I have seen for this are: [in order]

Check your spanning tree settings on your switches. The spanning tree settings can affect what is seen and the quality of the connections on macs.

MTU size

Jumbo packet settings

CPU offloading

Disable protocols not in use I have seen many networks with protocols enabled that are not in use.

Daisy chaining too many switches incorrectly violating ethernet standards.

broadcast storm suppression

Wiring violations:
coiling excess ethernet wire - creating magnetic induction improperly terminated RJ45 connector insufficient length to provide enough ohm resistance. wrapping a wire around a high power conduit

0

I don't know if it is still relevant, but I too had the same issue as you described and I solved it by editing the /etc/sysctl.conf file on the mac clients.

I have found these settings to work in my situation, but perhaps they might need some tweaking in your situation.

net.inet.tcp.win_scale_factor=8
net.inet.tcp.autorcvbufmax=16777216
net.inet.tcp.autosndbufmax=16777216
0

Not an advertisement - check out a trial of Acronis Access Connect (used to be called Acronis ExtremeZ-IP). From my research, Microsoft frequently changes it's SMB implementation and even if you get it to work at a sane speed it could 'break' at a later release. Acronis stays on top of this for you, for a hefty cost.

http://www.acronis.com/en-us/mobility/mac-windows-compatibility/

I've used it with several clients for a few years and it's pretty solid.

Note: In my experience actual network throughput is dramatically increased by using this service. This product bridges the differences in the implementation/s of SMB. I had this exact issue until I tried this - it works. And as I said, even if you get it to work it could break with a later update of the SAMBA implementation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.