Ich schaue mir dieses Setup an:
- Windows Server 2012
- 1 TB NTFS-Laufwerk, 4 KB-Cluster, ~ 90% voll
- ~ 10 Millionen Dateien in 10.000 Ordnern gespeichert = ~ 1.000 Dateien / Ordner
- Dateien meist recht klein <50 KB
- Virtuelles Laufwerk auf Festplattenarray gehostet
Wenn eine Anwendung auf Dateien zugreift, die in zufälligen Ordnern gespeichert sind, dauert das Lesen jeder Datei 60 bis 100 ms. Bei einem Testwerkzeug scheint die Verzögerung beim Öffnen der Datei aufzutreten. Das Lesen der Daten dauert dann nur einen Bruchteil der Zeit.
Zusammenfassend bedeutet dies, dass das Lesen von 50 Dateien leicht 3-4 Sekunden dauern kann, was viel mehr als erwartet ist. Das Schreiben erfolgt im Batch, sodass die Leistung hier kein Problem darstellt.
Ich habe bereits die Ratschläge zu SO und SF befolgt, um zu diesen Zahlen zu gelangen.
- Verwenden von Ordnern zum Reduzieren der Anzahl von Dateien pro Ordner ( Speichern einer Million Bilder im Dateisystem )
- Führen Sie
contig
zu defragmentieren Ordner und Dateien ( /programming//a/291292/1059776 ) - 8.3 Namen und letzte Zugriffszeit deaktiviert ( Konfigurieren des NTFS-Dateisystems für die Leistung )
Was tun mit den Lesezeiten?
- Betrachten Sie 60-100 ms pro Datei als in Ordnung (nicht wahr, oder?)
- Irgendwelche Ideen, wie das Setup verbessert werden kann?
- Gibt es Überwachungstools auf niedriger Ebene, die genau erkennen können, wofür die Zeit aufgewendet wird?
AKTUALISIEREN
Wie in den Kommentaren erwähnt, führt das System Symantec Endpoint Protection aus. Durch Deaktivieren werden jedoch die Lesezeiten nicht geändert.
PerfMon misst 10-20 ms pro Lesevorgang. Dies würde bedeuten, dass jeder Dateilesevorgang ~ 6 E / A-Lesevorgänge erfordert, oder? Wäre dies MFT-Lookup und ACL-Prüfungen?
Die MFT hat eine Größe von ~ 8,5 GB, was mehr als der Hauptspeicher ist.