Login
Newsletter
Werbung

Do, 18. Januar 2018, 12:02

Software::Entwicklung

Microsoft verbessert Skalierbarkeit von Git

Je größer ein Datenbestand wird, desto mehr fallen Operationen auf, die mit zunehmender Datenmenge immer langsamer werden. Das musste Microsoft bei seinem Einsatz von Git erkennen und brachte verschiedene Änderungen ein, die Git beschleunigen.

git-scm.com

Das weltgrößte Git-Repositorium wird von Microsoft betrieben, zumindest nach deren eigenen Angaben. Schon im Juni 2017 hatte Microsoft vermeldet, den Quellcode von Windows komplett in Git zu halten, mit täglich 8500 Push-Anfragen, 2500 Pull-Requests und 4300 Branches. Bei dieser enormen Geschäftigkeit fielen bald einige Stellen in Git auf, die zu lästigen Verzögerungen führten. Entwickler bei Microsoft behoben diese Probleme und ließen auch 2017 wieder die entsprechenden Änderungen in die offizielle Git-Version einfließen. Ein Blog-Beitrag von Derrick Stolee beschreibt diese Änderungen.

Die Nutzung von gigantischen Git-Repositorien wird überhaupt erst praktikabel durch die Verwendung von Git Virtual File System (GVFS). GVFS ist nur für Windows 10 verfügbar, auch wenn es freie Software unter der MIT-Lizenz ist. GVFS lädt effektiv nur die Dateien herunter, die der Entwickler benötigt. Alle anderen Dateien sind zwar sichtbar, verbleiben aber auf dem Server.

Microsoft beschleunigte die Interaktion mit dem Git-Index, der Liste aller Dateien. Bei vielen Operationen wird dieser Index in den Speicher geladen. Dabei fand eine Prüfung statt, ob die Liste sortiert ist. Das Entfernen dieser Prüfung, die unnötig war, brachte 18% Beschleunigung. Durch eine verbesserte Duplikatsprüfung wurde das Schreiben des Index um 20% beschleunigt. Weitere Optimierungen machten das Lesen und Schreiben noch etwas schneller.

Neue Flags im Dateistatus machten das Kommando git status schneller. Mit der Option --ignored wurde git status um bis zu 50% beschleunigt. Doch selbst nach dieser Operation musste das Kommando alle Dateien im Arbeitsbereich untersuchen, was zu langsam war. Deshalb fügte Microsoft ein Dateisystem-Monitor-Plugin zu Git hinzu, das einen Schnappschuss des Status der geschriebenen Dateien liefert. Dieses Plugin arbeitet vorwiegend mit GVFS, kann aber auch andere Programme wie Watchman nutzen.

Git-Kommandos zeigen oft nur eine Abkürzung des tatsächlichen Hash-Wertes einer Datei an. Die Berechnung dieser Abkürzung, die eindeutig sein muss, konnte um 5% beschleunigt werden. Eine weitere Optimierung, die hauptsächlich im Zusammenspiel mit GVFS von Bedeutung ist, beschleunigte das Erstellen eine Objektliste im Speicher. Weitere, im aktuellen Beitrag nicht erwähnte Optimierungen, sind einem früheren Blog-Beitrag zu entnehmen.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung