Was macht der Dateisystemcache in Windows 7?

Was macht der Dateisystemcache in Windows 7?

DerDiagnostizieren, warum Git so langsam istDer Artikel enthält diesen interessanten Punkt:

Aktivieren Sie den Dateisystem-Cache

Die Dateisystemebene von Windows unterscheidet sich grundsätzlich von der von Linux (für das der Dateisystemzugriff von Git optimiert ist). Als Workaround bietet Git für Windows einen Dateisystemcache, der nach einem anfänglichen „Aufwärmen“ in vielen Fällen die Vorgänge beschleunigt. Sie können den Dateisystemcache pro Repository aktivieren:

git config core.fscache true

Was ändert sich eigentlich, wenn ich diese Option in Git aktiviere? Wie sieht der Dateisystem-Cache in Windows 7 aus und was wird zwischengespeichert? Was beinhaltet das „erste Aufwärmen“?

Antwort1

Hier steht git config --help:

core.fscache
Aktivieren Sie für einige Vorgänge zusätzliches Caching von Dateisystemdaten.

Git für Windows verwendet dies, um lstat-Daten ganzer Verzeichnisse massenhaft zu lesen und zwischenzuspeichern (anstatt lstat Datei für Datei auszuführen).

Anstatt viele Dateisystemanforderungen zu stellen, führt Git nur eine Anforderung aus, um Informationen zu allen Dateien im Verzeichnis abzurufen.

Eine ausführlichere technische Beschreibung finden Sie im Commit, das Folgendes eingeführt hat fscache:
Win32: Fügen Sie einen Cache unterhalb der lstat- und dirent-Implementierungen von Mingw hinzu

Die Überprüfung des Arbeitsbaumstatus ist unter Windows aufgrund der langsamen lstat-Emulation ziemlich langsam (git ruft lstat einmal für jede Datei im Index auf). APIs des Windows-Betriebssystems scheinen den Status ganzer Verzeichnisse viel besser zu scannen als einzelne Dateien zu überprüfen.

Fügen Sie eine lstat-Implementierung hinzu, die einen Cache für lstat-Daten verwendet. Cache-Fehler lesen das gesamte übergeordnete Verzeichnis und fügen es dem Cache hinzu. Nachfolgende lstat-Aufrufe für dasselbe Verzeichnis werden direkt aus dem Cache bedient.

Implementieren Sie auch opendir / readdir / closedir, damit sie Verzeichnislisten im Cache erstellen und verwenden.

Der Cache verfolgt keine Änderungen am Dateisystem und ist nicht mit APIs zum Ändern von Dateien kompatibel. Daher muss er für Git-Funktionen, die die Arbeitskopie nicht ändern, ausdrücklich aktiviert werden.

verwandte Informationen