Windows 7でVPNを接続すると、Emacsが遅くなる
背景
出張中、VPNで社内LANに繋いで作業していると、WindowsのEmacsが非常に低速になってしまった。VPNを有効にした途端、やたら重くなってしまうのだ。とくにdiredやファイル読み出し、書き込みなど、ファイルI/O関連で遅くなってしまっているように思える。よくある問題だと思うんだけど、何故か日本語解説が全く出なかったのでメモ。
(特に外に出て行くSEなんかは、WindowsでVPN使ってるなんてよくある状況に思えるんだけど、なんでほとんど情報が出なかったのか、不思議だ。。)
調査
StackOverFlowでは、以下が有効そうに思えた。
windows - Emacs creates buffers very slowly - Stack Overflow
ので、以下試した結果。
解決法
recentf-auto-cleanup
(setq recentf-auto-cleanup 'never)
を init.elもしくは .emacsに書き込んで 、eval-buffer。が、パフォーマンス改善せず。
w32-get-true-file-attributes
(setq w32-get-true-file-attributes nil)
を評価。すると、パフォーマンスがもとにもどって、これでヨシ。
コレは何か
GNU Emacs Manual: Windows Files
ここに解説があるように、Windowsのファイルシステムに対して、権限の制御などをうまくやってくれる設定のようだ。これを有効にしておくと、理由はわからないけど、VPNでのパフォーマンスに問題が出るようだ。これにnilを設定した場合、上記の制御がきかないので、UNIXとDOSのファイルシステム差分をうまく制御できなくなるはずなんだけど。。ido-modeやdiredはきちんと動いているように見えた。逆にこれを設定するメリットがわからないほどなんだけど、僕は基本内勤で、VPNは頻繁には使わないので、VPN使うときだけ手動でOFFに設定にするようにしよう。