2
Oct/07
8

TortoiseSVN: TSVNCache.exe Disk I/O minimieren

Jeder kennt das Phänomen, eine Windows-Installation wird mit der Zeit immer langsamer. Warum das passiert und woran es liegt kann ich nicht genau sagen – das hat sehr viele Faktoren. Oft ist heutzutage nicht mehr die CPU oder der Arbeitsspeicher, sondern vielmehr der Disk-I/O der limitierende Faktor. Auf der Suche nach etwas Optimierungspotential mit dem Filemon von Sysinternals bin ich auf den Dienst TSVNCache.exe gestoßen. Die Anwendung produziert ein massives I/O Aufkommen. Auf der Suche nach einem “Warum?” und dem “Wie vermeiden?” bin ich im WWW auf verschiedene nützliche Hinweise gestoßen. Die besten habe ich hier mal kurz zusammen geschrieben.

Wofür wird der Cache benötigt?
Seit der Version 1.2 gibt es diese neue Anwendung TSVNCache.exe. Die Release Notes dieser Version schreiben folgendes:

TortoiseSVN has always had a recursive overlay feature whereby overlay changes in lower level folders are propagated up through the folder hierarchy so that you don’t forget about changes you made deep in the tree. However, in previous releases this feature was only useable with very small working copies due to the delay in getting the status information.

In release 1.2, a new TSVNCache program is used to maintain a cache of your working copy status, providing much faster access to this information. Not only does this prevent explorer from blocking while acquiring status, but it also makes recursive overlays workable.

Der Cache ist also dazu da performant die kleinen Status-Icons (aktuell, veraltet, …) auf die unter Versionskontrolle stehenden Dateien/Verzeichnisse korrekt abzubilden. Das ganze natürlich rekursiv. Vor der Version 1.2 war es nicht wirklich performant, deswegen wurde das Program TSVNCache hinzugefügt, welches dann vorsorglich mal ein bisschen die Festplatte nach betroffenen Dateien/Verzeichnissen durchsucht.
TSVNCache weiß aber nicht, dass ich unterhalb meines Windows oder Programme Verzeichnisses sicher keine solchen Dateien habe, das ist dem Programm aber herzlich egal, es durchsucht in den Default-Einstellungen fleißig alle Dateisysteme.

Es gibt eine Möglichkeit, mit der man eine Konsole für den Dienst öffnen kann

  • Man lege einen DWORD Registry-Key mit dem Wert 1 an: HKEY_CURRENT_USER\Software\TortoiseSVN\CacheTrayIcon
  • Anwendung TSVNCache.exe neu starten oder einfach killen (startet mit dem Explorer automatisch neu)
  • Jetzt erscheint ein TortoiseSVN-Icon im Tray, mit einem Doppelklick kann man eine Konsole sichtbar machen, dort werden alle Dateien/Verzeichnisse angezeigt, die durchsucht werden

Für Debugging-Zwecke ist das eine super Sache. Gerade, wenn man kontrollieren möchte, ob die im folgenden gemachten Einstellungen tatsächlich greifen.

Es gibt eine Möglichkeit das Programm TSVNCache in seine Schranken zu weisen
Vorweg: Initial hatte ich TortoiseSVN in der Version 1.3.6804 installiert, damit gab es mit diesem Feature einige Probleme, daher habe ich auf die Version 1.4.4 Build9706 aktualisiert. Damit funktioniert die u.G. Konfiguration ohne Probleme.

  • Gehe auf dem Desktop oder im Explorer auf ein beliebiges Verzeichnis, “Rechtsklick darauf -> TortoiseSVN -> Settings…”
  • Im folgenden Dialog gibt es links in der Navigation unterhalb von “Look & Feel” den Punkt “Icon Overlay”
  • Dort ist bei mir das Feld “Exclude Paths:” leer, dafür habe ich unter “Include Paths:” den Pfad “D:\repos” eingetragen
  • Jetzt den Dialog mit “OK” bestätigen und die Anwendung TSVNCache.exe neu starten bzw. killen (startet mit dem Explorer automatisch neu)

Jetzt werden nur noch die Verzeichnisse unterhalb von “D:\repos” durchsucht. Das Verhalten lässt sich, wie gesagt, mit der TSVNCache-Console gut prüfen.

Viel Spaß damit…

Filed under: Windows
Comments (6) Trackbacks (2)
  1. Stefan VNo Gravatar
    12:13 on October 16th, 2007

    Mmmmh, danke!
    Gerade auf den Notebooks macht die Datei-IO ja schon etwas aus, ich hatte schon den Eindruck, dass der TSVN-Cache die Maschinen bremst. Mit dem Tip laeuft’s wieder schoen rund!
    Stefan

  2. ThomasNo Gravatar
    14:02 on May 12th, 2008

    Danke!
    Super tipp
    weil ansonsten verhindert TSVN-Chace auch das sichere entfernen von USB-Festplatten, dank dir hoffentlich nicht mehr ;-)

    lg

  3. TomNo Gravatar
    11:38 on January 20th, 2009

    Besten Dank für den Tipp mit dem Reg-Key! Endlich weiß ich, warum die Platte immer rödelt!

  4. OlafNo Gravatar
    12:19 on March 9th, 2009

    Im aktuellen Tortoise-release (1.5.9) scheint die Einstellung nicht mehr zu greifen.
    Um den gewünschten Effekt zu erreichen habe ich unter “Exclude Paths” “*” angegeben – dann funktionierte die Beschränkung wieder.

  5. AndreasNo Gravatar
    08:24 on September 17th, 2009

    Vielen Dank für den Tip! Ich arbeite derzeit mit Tortoise SVN 1.6.2 und werde probieren, ob der Eintrag in “Exclude Paths”, den Olaf erwähnt hat, nötig ist.

    Etwas anderes scheint aber im Zusammenhang mit Tortoise SVN, insbes. bei größeren Workingcopies, wichtig zu sein: erstens eine schlanke Datenstruktur auf der Festplatte (unnötige Installationen, Datenmüll vermeiden, auch außerhalb der Workingcopy – das klingt zwar altbacken, ist aber nach wie vor in Wechselwirkung mit anderen Faktoren wichtig); zweitens unbedingt den Indexierungsdienst des MS Betriebssystems deaktivieren, um cidaemon.exe zu killen, hierzu wie folgt vorgehen: Doppelklick auf Arbeitsplatz, dann klick auf “Suchen”, dann “Bevorzugte Einstellungen Ändern” anklicken und dort den Indexierungsdienst deaktivieren. Drittens Antivirenprogramme – ein weites Feld: Bei mir hat es extrem Performance gebracht neben den o.g. Punkten, daß ich das AntiVirProgr “GData” deinstalliert und stattdessen “Avira AntiVir” verwende. Meine Kiste läuft jetzt wieder performant, ohne daß “Plattmachen” nötig gewesen wäre …

    Falls jemand weiß, wie ich noch das “Rauf- und Runterfahren” meines geliebten Laptops beschleunigen kann, würde ich mich über Hinweise freuen…

  6. StefanKNo Gravatar
    11:25 on April 30th, 2010

    Hey Lars,

    auch nach Jahren noch hilfreich :-) DANKE für den Tip! Ich benutze Tortoise in einer virtuellen Maschine, die jetzt endlich wieder Gas gibt, Handbremse ist raus!
    Tortoise 1.6.8 läuft gut, das TrayIcon ist da, funzt alles nach ‘Kill’, auch ohne Angabe von Exclude Paths (=*).