MacからNASとかWindowsの共有フォルダへのアクセスが妙に遅いのを解決する

Macを使い始めて3年悩み続けていた共有フォルダ上のファイルアクセスに時間がかかる問題が解決するときが来た!

sudo sysctl -w net.inet.tcp.delayed_ack=0

参考 : sudo sysctl -w net.inet.tcp.delayed_ack=0

なんとこれだけでOK。この瞬間にもうサクサクですよ。信じられない!

iTunesの曲送りも、プレビューでの写真閲覧も、大量にファイルがあるフォルダへのFinderアクセスも! これで! これだけで! 超快適に! 興奮が止まらない!

で、このnet.inet.tcp.delayed_ackなるパラメータを調べてみたら、Unix系OSでは結構昔から知られているパラメータみたいですね。下記参考サイトによればnet.inet.tcp.sendspaceについても設定を変更した方が良さそうですが、今のところ不満がないのでこのままで。。

参考 : FreeBSD QandA 1582

いやー本当に喜ばしい。

2012/09/30追記

環境限定の事象かもしれないので、何かとスペックを書いておく。

ファイルサーバ

ルーター

クライアント

2013/01/25追記

コマンド打っただけだと再起動したら消えてしまうので、/etc/sysctl.confにnet.inet.tcp.delayed_ack=0を追記して下さい。

たとえば、

sudo vi /etc/sysctl.conf

として、

net.inet.tcp.delayed_ack=0

を追記します。

2013/09/21追記

ブコメで「システム全体でdelayed ack切るとは何事だ」という指摘がありましたので、別案を調べてみました。調べただけで試していませんが。

システム全体のdelayed_ackを無効にするのではなく、MacがWindowsとのファイル共有に使用しているSambaの設定でdelayed_ackを無効にすることで同様の効果を得ようというアプローチです。下記サイトご参考。

ただ、これが有効そうだったのはOS X Lionまでで、Mountain LionからはSambaが含まれなくなってしまっている*1ので、下記サイトのように自分でSambaを入れないと上記手段が適用できないのでご注意。

気になる方は是非お試しいただきフィードバックいただければと思います。

*1:SMB/CIFS関係の処理はAppleの独自実装に差し替えられているらしい