Bu düzene bakıyorum:
- Windows Server 2012
- 1 TB NTFS sürücü, 4 KB kümeler, ~% 90 dolu
- 10.000 klasörde depolanan ~ 10M dosya = ~ 1.000 dosya / klasör
- Çoğunlukla küçük dosyalar <50 KB
- Disk dizisinde barındırılan sanal sürücü
Bir uygulama rasgele klasörlerde saklanan dosyalara eriştiğinde, her dosyayı okumak 60-100 ms sürer. Bir test aracıyla, gecikme dosyayı açarken ortaya çıkar. Verileri okumak zamanın sadece bir kısmını alır.
Özetle, bu 50 dosyayı okumanın 3-4 saniye alabileceği anlamına gelir ki bu beklenenden çok daha fazladır. Yazma toplu olarak yapılır, bu nedenle performans burada bir sorun değildir.
Zaten bu rakamlara ulaşmak için SO ve SF tavsiyelerini takip ettim.
- Klasör başına dosya sayısını azaltmak için klasörleri kullanma ( Dosya sisteminde bir milyon görüntü saklama )
contig
Klasörleri ve dosyaları birleştirmek için çalıştırın ( https://stackoverflow.com/a/291292/1059776 )- 8.3 adlar ve son erişim süresi devre dışı ( NTFS dosya sistemini performans için yapılandırma )
Okuma süreleri hakkında ne yapmalı?
- Dosya başına 60-100 msn tamamlanmasını düşünün (değil, değil mi?)
- Kurulumun nasıl geliştirilebileceği hakkında bir fikriniz var mı?
- Tam olarak ne zaman harcandığını anlayabilecek düşük seviyeli izleme araçları var mı?
GÜNCELLEME
Yorumlarda belirtildiği gibi sistem Symantec Endpoint Protection'ı çalıştırır. Ancak, devre dışı bırakılması okuma sürelerini değiştirmez.
PerfMon okuma başına 10-20 ms ölçer. Bu, okunan herhangi bir dosyanın ~ 6 G / Ç okuma işlemi gerektirdiği anlamına gelir, değil mi? Bu MFT araması ve ACL kontrolleri olur mu?
MFT'nin boyutu ~ 8,5 GB'tır ve bu da ana bellekten daha fazladır.