MacからWin共有フォルダへのアクセスの高速化
Windows のリストアに向けて、データのバックアップをネットワーク越しに行っていたのだが、転送速度がかなり遅い(in/out ともに数十kB/s)。
どちらの機体もルーターの外に対してはそれなりの通信を行えるにもかかわらず、なぜか機体間ではうまくいかない。 smb.confを書き換えて調整しようかとも思ったものの、どうやら現行のOS X (Mountain Lion以降)ではsamba ではないシステムを使って共有フォルダを作り上げているようで、対処できなかった。
そんなとき、google先生のご教授により、同じ問題に悩んでいたymknさんの記事を紹介賜った。
sudo sysctl -w net.inet.tcp.delayed_ack=0
この呪文をたった一言唱えるだけで、Mac からWin の共有フォルダに対するアクセスが劇的に(20倍以上)向上した。
とりあえず、再起動時にもこの設定が使われるように、新たに作成した設定ファイル
/etc/sysctl.conf (通常は存在していない)
に
net.inet.tcp.delayed_ack=0
を記載する。
どなたかの参考になるかも知れないので、こちらの環境を記載しておく。
ホスト
Windows Vista SP2
Intel 82562V-2 10/100 Network Cinnection
WPA/WPA2-Mixed TKIP+AES
クライアント
MacMini (Late 2012)
OS X 10.8.3 (Mountain Lion)
WPA/WPA2-Mixed TKIP+AES
ルーター
WHR-G301N (Buffalo) (Ver. 1.82)
TCP遅延AKT (TCP delayed acknowledgment)
一般的なネットワーク通信(TCP通信)では、データを断片化したパケットとしてサーバー・クライアント間で送受信している。サーバーからのパケットはシーケンス制御と呼ばれる手法で順にクライアントに送られる。ここでパケットの受信を送信側に知らせる信号をACK番号と呼んでいる。
以下の図では、サーバーから送られたパケットを受けとった確認として、クライアントからACK番号がサーバーに毎回送信されている。
一方で、パケット数の大きなデータを送信する場合、このACK番号が膨大な数となることから通信が非効率となるようである。そこで、ACK番号を発する頻度を低下させるシステムが遅延AKTである。
本ページには、Amazon.co.jpアソシエイト・プログラムによるリンクが含まれております。