Meblog

このブログ記事は個人の見解であり、所属する組織の公式見解ではありません

Windows 7でVPNを接続すると、Emacsが遅くなる

背景

出張中、VPNで社内LANに繋いで作業していると、WindowsEmacsが非常に低速になってしまった。VPNを有効にした途端、やたら重くなってしまうのだ。とくにdiredやファイル読み出し、書き込みなど、ファイルI/O関連で遅くなってしまっているように思える。よくある問題だと思うんだけど、何故か日本語解説が全く出なかったのでメモ。
(特に外に出て行くSEなんかは、WindowsVPN使ってるなんてよくある状況に思えるんだけど、なんでほとんど情報が出なかったのか、不思議だ。。)

解決法

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を設定した場合、上記の制御がきかないので、UNIXDOSファイルシステム差分をうまく制御できなくなるはずなんだけど。。ido-modeやdiredはきちんと動いているように見えた。逆にこれを設定するメリットがわからないほどなんだけど、僕は基本内勤で、VPNは頻繁には使わないので、VPN使うときだけ手動でOFFに設定にするようにしよう。