Skip to content

Instantly share code, notes, and snippets.

@fweller
Last active November 25, 2025 04:37
Show Gist options
  • Select an option

  • Save fweller/ac8d996c408dd832b6cae4d2d47a21cb to your computer and use it in GitHub Desktop.

Select an option

Save fweller/ac8d996c408dd832b6cae4d2d47a21cb to your computer and use it in GitHub Desktop.
How I fixed slow NAS SMB access on my Apple-silicon Mac

How I fixed slow NAS SMB access on my Apple-silicon Mac

Last updated: 20251123


Problem

  • SMB performance on Apple Silicon Macs (M1/M2/M3/M4) is often dramatically slower compared to Intel-based Macs or Linux/Windows PCs.
  • This is an extremely common issue with other users employing Synology, TrueNAS, or Linux Samba.
  • My experience is that my Apple MacBook Pro with M1 silicon is 10x slower on SMB accesses than my 2014 Intel-based MacBook Pro.
  • My workflow requires multiple synchronizations daily with my Synology NAS of approximately 10,000 files taking up about 30 to 40 GBytes of storage space.

Research

What I have learned from substantial research on the topic. Apple Silicon SMB slowness appears tocome from five main factors:

  1. Apple’s new SMB3 client stack has changed (and regressed) behavior vs Intel macOS versions.
  2. SMB multichannel is disabled or inconsistently negotiated on Apple Silicon.
  3. Signing and encryption defaults are stricter and often forced, even when the server doesn't need them.
  4. Kernel networking stack changes on ARM macOS interact badly with SMB I/O queues, especially over 10GbE or Wi-Fi 6/6E. Note that I have not confirmed the 10GbE statement.
  5. SMB client I/O pattern differences (write-behind and read-ahead bugs) hit Linux and NAS servers particularly hard.

Acknowledgements of the issue

Apple

  • Apple has not publicly acknowledged the regression.
  • Apple never comments publicly on SMB regressions, but fixes do slowly appear in macOS point releases.

However:


Solution

The following modifications to my Synology NAS and my MacBook Pro M1 has resulted in a 10x speed improvement over SMB.

Instructions

  1. Make changes to the Synology NAS
  2. Edit the file on MacOS
  3. Reboot the MacOS computer
  4. Enjoy the performance improvement

Synology NAS Configuration

Control Panel / File Sharing / File Services

SMB - SMB Settings

  • Enable SMB service = CHECKED
  • Disallow access to Previous Versions = UN-CHECKED
  • Hide shared folders from users without permission = UN-CHECKED
  • Enable Transfer Log = CHECKED

SMB - Aggregation Portal

  • Enable Aggregation Portal = UN-CHECKED

SMB - WS-Discovery

  • Enable Windows network discovery to allow file access via SMB = CHECKED

SMB Settings - Advanced Settings

SMB Settings - Advanced Settings - General

  • Maximum SMB protocol = SMB3
  • Minimum SMB protocol = SMB2 and Large MT
  • Transport encryption mode = Disable
  • Server signing status = Client defined
  • Enable Opportunistic Locking = CHECKED
  • Enable SMB2 file leasing = CHECKED
  • Enable SMB3 directory leasing = CHECKED
  • Apply to 'home' and 'homes' shared folders only = UN-CHECKED
  • Apply to all shared folders = CHECKED
  • Enable SMB durable handles = CHECKED

SMB Settings - Advanced Settings - macOS

  • Enable VFS module to convert Mac special characters = CHECKED
  • Enable cross-protocol locking with AFP = UN-CHECKED

SMB Settings - Advanced Settings - Others

  • Enable Local Master Browser = UN-CHECKED
  • Enable DirSort VFS module = CHECKED
  • Veto files = UN-CHECKED
  • Allow symbolic links within shared folders = CHECKED
  • Allow symbolic links across shared folders = UN-CHECKED
  • Disable multiple connections from the same IP address = UN-CHECKED
  • Collect debug logs = UN-CHECKED
  • Apply default UNIX permissions = UN-CHECKED
  • Do not reserve disk space when creating files = CHECKED
  • Enable NTLMv1 authentication = UN-CHECKED
  • Enable asynchronous read = CHECKED
  • Monitoring changes on all subfolders within the directory = UN-CHECKED
  • Synchronize data to drive immediately upon SMB client request = UN-CHECKED
  • Enable SMB3 Multichannel = UN-CHECKED
  • Enable wildcard search cache = CHECKED
  • Enable performance analysis = UN-CHECKED

AFP

  • Enable AFP service = UN-CHECKED
  • Enable transfer log = UN-CHECKED

NFS

  • Enable NFS service = UN-CHECKED

FTP

  • I have not enabled FTP

rsync

  • I have not enabled rsync

Advanced - Fast File Clone

  • Enable fast file clone = UN-CHECKED

Advanced - Bonjour

  • Enable Bonjour service discovery to locate Synology NAS = CHECKED
  • Enable Bonjour Printer Broadcast = UN-CHECKED
  • Enable Bonjour Tim Machine broadcast via SMB = CHECKED
  • Enable Bonjour Tim Machine broadcast via AFP = UN-CHECKED

Advanced - SSDP

  • Enable Windows network discovery to allow access via web browsers = CHECKED

Advanced - TFTP

  • Enable TFTP service = UN-CHECKED

Advanced - Bypass Traverse Checking

  • Enable bypass traverse checking = UN-CHECKED

MacOS Configuration

File: /etc/nsmb.conf

Contents:

[default]
streams=no
signing_required=no
protocol_vers_map=4
mc_on=no

Explanations:

  • streams=no disables all metadata streams
  • SMB signing can reduce throughput by 50-70% on Apple Silicon
  • Protocol 4 = SMB3 only
  • Do not enable SMB Multichannel unless bandwidth to NAS exceeds 1 Gbps

@TheDMV2
Copy link

TheDMV2 commented Nov 24, 2025

Fix missing.erronius carriage returns
SMB - SMB Settings

Enable SMB service = CHECKED
Disallow access to Previous Versions = UN-CHECKED
Hide shared folders from users without permission = UN-CHECKED
Enable Transfer Log = CHECKED
SMB - Aggregation Portal, Enable Aggregation Portal = UN-CHECKED
SMB - WS-Discovery, Enable Windows network discovery to allow file access via SMB = CHECKED

@TheDMV2
Copy link

TheDMV2 commented Nov 24, 2025

Fix missing.erronius carriage returns
Advanced - Fast File Clone

Enable fast file clone = UN-CHECKED
Advanced - Bonjour, Enable Bonjour service discovery to locate Synology NAS = CHECKED
Enable Bonjour Printer Broadcast = UN-CHECKED
Enable Bonjour Tim Machine broadcast via SMB = CHECKED
Enable Bonjour Tim Machine broadcast via AFP = UN-CHECKED
Advanced - SSDP, Enable Windows network discovery to allow access via web browsers = CHECKED
Advanced - TFTP, Enable TFTP service = UN-CHECKED
Advanced - Bypass Traverse Checking, Enable bypass traverse checking = UN-CHECKED

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment