最近发现办公室有一台服务器三不五时会发生系统无响应,或者操作时慢到像乌龟散步的情形,用工作管理员观察后发现,每次出现这种情形时,TSVNCache.exe
这个 process 都一直占住 CPU 资源约 50%。虽然只是 50%,但整个系统操作起来几乎像快要当掉一样。
用 Google 搜寻一下,发现已经有人把这个问题的前因后果以及解决方法都写出来了,真是感激原作者。原文在此:TortoiseSVN:
解决TSVNCache占用CPU过高的设定。
原文照贴如下(只是为了备份,以免原始文章连结失效):
=============================< BEGIN >==================================
然被中文接口误导了这么久!如果你偶尔在工作管理员里发觉TSVNCache.exe突 然耗用许多CPU资源(有时会超过50%),那要赶紧去检查TortoiseSVN的
设定。原来是这个常驻的Process会定时去扫描受Subversion控 管的档案是否被修改了,扫描到后,这些被修改的档案、与其所属的子目录、目录等的覆盖图标都一并更新,而就是这个动作不仅占用约10-50
MB内存,也会瞬间冲出超过CPU 50%负载。
图示覆盖与状态区更新设定
打开TortoiseSVN的 【设定窗口(Settings)→视觉样式(Look and Feel)→图标覆盖(Icon
Overlays)】,右边第一个Radio Group名称「图示覆盖/状态列」的英文是「Icon Overlays/Status
Columns」,其中的Status Columns应译成状 态栏才对,它指的是在档案总管里把显示模式切换成详细数据时,
标题字段里的Subversion字段是否要同步更新状态。如果你只会在档案总管里操作Subversion状态的话,应该把「仅在档案总管中显示图标覆
盖」打勾,以免除另存新档、开启档案等对话窗也更新图示状态。但我有时会在Total Commander里操作Subversion,因此就不能勾选。
状态快取设定
右边第二个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 被占住的情形,因此这个选项最好还是勾起来。
|