TSVNCache.exe占用CPU过高的问题
这个常驻的TSVNCache.exe进程,会定时检查服务器端文件是否更新,如果有更新它会自动同步有改动的文件到本地,而且包括被修改的文件、与其所属的子目录、目录等的覆盖图标都一并更新,看似很微小的一个动作,就会占用约10-50 MB不等的内存,也会瞬间冲出超过CPU 50%负载。解决办法如下:
打开TortoiseSVN——设置——图标覆盖——状态缓存——无。(一般设置成无最好,如果你要保留图标可以根据喜好设置)
如果你是英文按照以下流程即可。
TortoiseSVN–>settings–>look and feel–>Icon Overlays–>Status cache –>“none”
状态快取设定
右边第二个Radio Group名称译成「状态缓存」,让人误解成以为是显示讯息的状态列设 定,但其实英文是Status Cache-状态快取设定,指的是数据夹与档案图标的SVN小图标的覆盖状态的处理模式。Status Cache有3个选项:
- Default
预设的快取设定,使用TSVNCache.exe 来定时扫描档案系统,找到要变动的档案后发出更新图标的通知给操作系统 - Shell
在Shell extension里,只针对目前所在数据夹做图标异动更新;只占用1MB内存,但因只快取一个数据夹,当Working copy内容较多时会花较多时间才能更新完毕 - None
不做任何图标覆盖快取,因此图标更新速度较慢
我特别做了测试把状态改用Shell,重新开机后工作管理员里就找不到TSVNCache.exe 了,用档案总管检视Working copy数据夹时,图标覆盖以较缓慢的速度显示出来。
磁盘驱动器类型
磁盘驱动器类型是指定读取Subversion档案状态的对象,建议选硬盘,以免别的媒体较慢的读取速度造成TortoiseSVN效率低下。
在Subversion Forum这篇讨论里也有如下建议:
- 把A:\*、C:\*、D:\*到Z:\*都加到除外路径里,表 示每个磁盘都不做异动扫描
- 再把工作中的Working copy加入包含路径,如c:\NewProject\*、 d:\NewWD
再试用观察一阵子再来确认应该用那样的设定较好。
=============================< END >==================================
我发现如果「仅在档案总管中显示图标覆盖」选项没有勾选,还是会出现 CPU 被占住的情形,因此这个选项最好还是勾起来。