Langsame Leistung auf NTFS-Laufwerk mit einer großen Anzahl von Dateien

11

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.

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

  1. Wie in den Kommentaren erwähnt, führt das System Symantec Endpoint Protection aus. Durch Deaktivieren werden jedoch die Lesezeiten nicht geändert.

  2. 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?

  3. Die MFT hat eine Größe von ~ 8,5 GB, was mehr als der Hauptspeicher ist.

Paul B.
quelle
Würde es Ihnen etwas ausmachen , einen Screenshot von RAMMap zu teilen, um etwas auszuschließen ?
Tomas Dabasinskas
Meinen Sie die Dateiübersichtstabelle? Nachdem Sie es erwähnt haben, wird eine SYMEFA.DB-Datei mit 900 MB Speicher angezeigt, die mich daran erinnert, dass Symantec Endpoint Protection auf dem System installiert ist. Vielleicht ist das der Schuldige? Ich werde versuchen, mehr herauszufinden.
Paul B.
Eigentlich war ich mehr an der Verwendung von Metafile interessiert
Tomas Dabasinskas
OK habe es. Metafile zeigt insgesamt 250 MB, 40 aktiv, 210 Standby. Scheint normal oder nicht?
Paul B.
Ja, es scheint so
Tomas Dabasinskas

Antworten:

5

Der Server hatte nicht genügend Speicher. Anstatt NTFS-Metadateidaten im Speicher zwischenzuspeichern, erforderte jeder Dateizugriff mehrere Festplattenlesevorgänge. Wie üblich ist das Problem offensichtlich, sobald Sie es sehen. Lassen Sie mich mitteilen, was meine Perspektive getrübt hat:

  • Der Server zeigte 2 GB verfügbaren Speicher sowohl im Task-Manager als auch in RamMap an. Daher entschied Windows, dass der verfügbare Speicher nicht ausreichte, um einen aussagekräftigen Teil der Metadateidaten aufzunehmen. Oder eine interne Einschränkung erlaubt es nicht, das letzte Speicherbit für Metadateidaten zu verwenden.

  • Nach dem Upgrade zeigt der RAM Task Manager nicht mehr Speicher an. RamMap meldete jedoch, dass mehrere GB Metadateidaten als Standby-Daten gespeichert sind. Anscheinend können die Standby-Daten erhebliche Auswirkungen haben.

Für die Analyse verwendete Tools:

  • fsutil fsinfo ntfsinfo driveletter:um die NTFS-MFT-Größe (oder NTFSInfo ) anzuzeigen
  • RamMap zur Anzeige der Speicherzuordnung
  • Prozessmonitor , um anzuzeigen, dass vor jeder gelesenen Datei etwa 4 Lesevorgänge für Laufwerk: \ $ Mft und Laufwerk: \ $ Verzeichnis ausgeführt werden. Obwohl ich die genaue Definition von $ Directory nicht finden konnte, scheint es auch mit der MFT zu tun zu haben.
Paul B.
quelle
Die Erhöhung des physischen Gedächtnisses hat also die Reaktionszeiten verbessert? Sie haben keine Registrierungseinstellung konfiguriert?
D-Klotz
1
Ja. Ich hatte vorher mit Registrierungseinstellungen herumgespielt. Am Ende war jedoch keine Änderung nach dem Hinzufügen von Speicher erforderlich.
Paul B.
Standby-Speicher sind Speicherbereiche, die für die Verwendung durch Programme bereit sind. Da sie jedoch noch nicht verwendet werden, werden sie vom Betriebssystem als Cache verwendet. Sobald ein Programm diesen Speicher benötigt, wird es sofort veröffentlicht
phuclv