Freitag, 20. November 2009

jsync auf dem besten Wege zur neuen Version

Nachdem ich nun mehrere Tage und Versuche gebraucht habe, den Verbrauch des Speichers von jsync zu mindern, kann ich mit stolz ein neues Resultat liefern.

Bisher habe ich jsync nur über Rekursion durch die Verzeichnisse laufen lassen.
Der Nachteil dabei ist, dass diese Art der Verarbeitung sehr Speicherlastig ist.
Dies liegt daran, dass ich pro Verzeichnis Ebene eine Liste von Pfaden habe.
Sobald bei der Verarbeitung ein Ordner gefunden wird, wird in diesen gesprungen und wieder eine Liste mit Pfaden erstellt.

Dies habe ich mit einem einfachen Mittel gelöst und damit auch eine neue Option eingeführt.
Die neue Option unter der Sektion options trägt den Namen "useFileListSync".

Dabei wird der Ablauf von jsync im Fundament stark verändert.
Anstelle des Durchlaufs per Rekursion, wird nun eine Datei in einem Temporären Ordner angelegt.
Der Pfad zu dem Ordner ist über die Sektion folders mit dem Schlüssel tmp konfigurierbar.
In diesem Ordner wird dann die Datei mit der Zuordnung von Quelldatei und Zielordner angelegt.
Dabei werden absolute Pfade gespeichert gespeichert.

Damit sich die Threads bei der Arbeit nicht in die Haare kommen, bekommt jede Datei einfach die Thread ID als Namen + .txt.
Die Dateien können in dem aktuellen Zustand noch bearbeitet werden, was aber nicht erlaubt sein soll.
Dies werde ich dann noch anpassen.
Insgesamt liegt der Verbrauch des Speichers von jsync nun bei 160 MB bei 2 Threads die größere Dateien hashen sowie abgleichen oder ggf. neue Dateien kopieren.

Somit ist mein Ziel aber noch nicht ganz erreicht.
Als nächstes würde ich einen Verbrauch von unter 100 MB anpeilen.
Ab dies auch klappt, ist noch abzuwarten.

Ansonsten ist die kommende Version sehr stark optimiert um den Verbrauch stark zu reduzieren.

Keine Kommentare: