Prestazioni lente sull'unità NTFS con un numero elevato di file


12

Sto guardando questa configurazione:

  • Windows Server 2012
  • Unità NTFS da 1 TB, cluster da 4 KB, ~ 90% pieno
  • ~ 10 M file memorizzati in 10.000 cartelle = ~ 1.000 file / cartella
  • File per lo più abbastanza piccoli <50 KB
  • Unità virtuale ospitata su array di dischi

Quando un'applicazione accede ai file memorizzati in cartelle casuali, occorrono 60-100 ms per leggere ciascun file. Con uno strumento di test sembra che si verifichi il ritardo all'apertura del file. La lettura dei dati richiede solo una frazione del tempo.

In sintesi, ciò significa che la lettura di 50 file può richiedere facilmente 3-4 secondi, il che è molto più del previsto. La scrittura avviene in batch, quindi le prestazioni non sono un problema qui.

Ho già seguito i consigli su SO e SF per arrivare a questi numeri.

Cosa fare per i tempi di lettura?

  • Considera che 60-100 ms per file sono ok (non è vero?)
  • Qualche idea su come migliorare l'installazione?
  • Esistono strumenti di monitoraggio di basso livello in grado di dire esattamente in che cosa viene trascorso il tempo?

AGGIORNARE

  1. Come menzionato nei commenti, il sistema esegue Symantec Endpoint Protection. Tuttavia, disabilitarlo non modifica i tempi di lettura.

  2. PerfMon misura 10-20 ms per lettura. Ciò significherebbe che qualsiasi file letto richiede ~ 6 operazioni di lettura I / O, giusto? Si tratterebbe di ricerca MFT e controlli ACL?

  3. La MFT ha una dimensione di ~ 8,5 GB che è superiore alla memoria principale.


Per escludere qualcosa, ti dispiacerebbe condividere uno screenshot di RAMMap ?
Tomas Dabasinskas,

Intendi la tabella Riepilogo file? Ora che me lo dici, vedo un file SYMEFA.DB con 900 MB di memoria che mi ricorda che Symantec Endpoint Protection è installato sul sistema. Forse è questo il colpevole? Proverò a scoprire di più.
Paul B.

In realtà, ero più interessato all'utilizzo del Metafile
Tomas Dabasinskas il

Ok capito. Il metafile mostra 250 MB totali, 40 attivi, 210 in standby. Sembra normale o no?
Paul B.

Sì, sembra di sì
Tomas Dabasinskas il

Risposte:


5

Il server non aveva memoria sufficiente. Invece di memorizzare nella cache i dati metafile NTFS in memoria, ogni accesso ai file richiede letture multiple del disco. Come al solito, il problema è evidente una volta che lo vedi. Vorrei condividere ciò che ha offuscato la mia prospettiva:

  • Il server ha mostrato 2 GB di memoria disponibili sia in Task Manager che in RamMap. Pertanto, l'uno o l'altro Windows ha deciso che la memoria disponibile non era sufficiente per contenere una parte significativa dei dati metafile. Oppure alcune restrizioni interne non consentono di utilizzare l'ultimo bit di memoria per i dati metafile.

  • Dopo l'aggiornamento del Task Manager RAM non mostrerebbe più memoria utilizzata. Tuttavia, RamMap ha riportato più GB di dati metafile mantenuti come dati di standby. Apparentemente, i dati di standby possono avere un impatto sostanziale.

Strumenti utilizzati per l'analisi:

  • fsutil fsinfo ntfsinfo driveletter:per mostrare le dimensioni MFT NTFS (o NTFSInfo )
  • RamMap per mostrare l'allocazione di memoria
  • Process Monitor per mostrare che ogni file letto è preceduto da circa 4 operazioni di lettura per guidare: \ $ Mft e guidare: \ $ Directory. Anche se non sono riuscito a trovare la definizione esatta di $ Directory, sembra essere collegato anche alla MFT .

Quindi l'aumento della memoria fisica ha migliorato i tempi di risposta? Non hai configurato alcuna impostazione del registro?
D-Klotz,

1
Sì. In precedenza avevo giocato con le impostazioni del registro. Ma alla fine non è stato necessario apportare cambiamenti dopo aver aggiunto la memoria.
Paul B.

Le memorie di standby sono aree di memoria pronte per l'uso da parte dei programmi. Ma poiché non sono ancora utilizzati, il sistema operativo li utilizzerà come cache. Una volta che un programma ha bisogno di quella memoria, verrà rilasciato immediatamente
phuclv,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.