2008年8月27日 星期三

TortoiseSVN: 解決TSVNCache佔用CPU過高的設定

竟然被中文介面誤導了這麼久!如果你偶爾在工作管理員裡發覺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
再試用觀察一陣子再來確認應該用那樣的設定較好。

摘自:http://blog.roodo.com/emisjerry/archives/3979261.html

沒有留言:

wibiya widget