Dosya sistemi önbelleği Windows 7'de ne yapar?


16

Git çok yavaş neden Teşhis makale içinde bu ilginç maddesi vardır:

Dosya sistemi önbelleğini etkinleştir

Windows 'dosya sistemi katmanı doğası gereği Linux'tan farklıdır (Git için dosya sistemi erişiminin optimize edildiği). Geçici bir çözüm olarak Git for Windows, ilk "ısınma" işleminden sonra birçok durumda işlemleri hızlandıran bir dosya sistemi önbelleği sunar. Havuz başına dosya sistemi önbelleğini etkinleştirebilirsiniz:

git config core.fscache true

Git'te bu seçeneği etkinleştirirsem, gerçekte ne değişir? Windows 7'deki dosya sistemi önbelleği neye benziyor ve önbelleğe alınıyor? "İlk ısınma" neyi içerir?

Yanıtlar:


10

İşte ne git config --helpdiyor:

core.fscache
Bazı işlemler için dosya sistemi verilerinin ek önbelleğe alınmasını etkinleştirin.

Windows için Git bunu, tüm dizinlerin lstat verilerini toplu olarak okumak ve önbelleğe almak için kullanır (lstat dosyasını dosyaya göre yapmak yerine).

Git birçok dosya sistemi isteği yapmak yerine sadece dizindeki tüm dosyalar hakkında bilgi almak için bir istek yapar.

Daha fazla teknik açıklama, tanıtılan taahhütte bulunabilir fscache:
Win32: mingw'nin lstat ve dirent uygulamalarının altına bir önbellek ekleyin

Yavaş lstat öykünmesi nedeniyle Windows'ta çalışma ağacı durumunun denetlenmesi oldukça yavaştır (git dizindeki her dosya için lstat'ı bir kez çağırır). Windows işletim sistemi API'leri, tüm dizinlerin durumunu taramada tek dosyaları kontrol etmekten çok daha iyi görünüyor.

Lstat verileri için önbellek kullanan bir lstat uygulaması ekleyin. Önbellek özledikleri tüm üst dizini okur ve önbelleğe ekler. Aynı dizin için sonraki lstat çağrıları doğrudan önbellekten sunulur.

Ayrıca önbellekte dizin listeleri oluşturmaları ve kullanmaları için opendir / readdir / closedir uygulayın.

Önbellek, dosya sistemi değişikliklerini izlemez ve herhangi bir değiştirici dosya API'sına takılmaz, bu nedenle çalışan kopyayı değiştirmeyen git işlevleri için açıkça etkinleştirilmesi gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.