Condividi tramite


Considerazioni sulle prestazioni per NTFS transazionale

Ntfs transazionale (TxF) è stato progettato attentamente per le prestazioni e in genere offre prestazioni migliori rispetto alle alternative transazionali per utilizzo generico in scenari simili. Tuttavia, le transazioni del file system hanno un sovraccarico maggiore rispetto alle operazioni non transazionate e alcune prestazioni di I/O rispetto alle operazioni di I/O non transazioni devono essere previste. Le applicazioni critiche per le prestazioni devono eseguire un ciclo di qualificazione dell'adozione della tecnologia, valutando l'impatto sulle prestazioni delle operazioni del file system transazionato.

Panoramica delle operazioni TxF

TxF usa annullare registrazione per registrare le modifiche necessarie per riportare il file system in uno stato coerente, detto anche rollback, in caso di interruzione della transazione. Questa registrazione di annullamento genera operazioni di I/O aggiuntive ed è l'origine del sovraccarico delle prestazioni TxF rispetto alle operazioni non transazionali del file system.

Un riepilogo generale del funzionamento di TxF è il seguente:

  • Con l'avanzamento di una transazione, TxF scrive annullare record nel file di log per ogni modifica apportata al file system. Se si verifica un'interruzione, questi record di annullamento vengono analizzati per riportare il file system nello stato precedente all'inizio della transazione.
  • Una modifica metadati record di annullamento descrive una modifica solo ai metadati del file system. Alcuni esempi sono gli spostamenti, le ridenominazione, le aggiunte e le modifiche degli attributi. Per i record di annullamento della modifica dei metadati, tutte le informazioni necessarie per annullare la modifica si trovano nel record e archiviate nel file di log.
  • Un sovrascrivere record di annullamento descrive una sovrascrittura di una parte di un file. Quando si verifica una sovrascrittura di un file, il contenuto originale del file viene archiviato in un file di annullamento speciale in una directory nascosta e il record di annullamento della sovrascrittura punta a questo file. Quando gli aggiornamenti dei file vengono scaricati dalla cache al disco, è necessario scaricare anche il contenuto del file di annullamento, quindi una sovrascrittura di file transazioni potrebbe generare fino a due operazioni di I/O casuali aggiuntive: una per leggere i dati precedenti e una per scriverla nel file di annullamento. Queste operazioni di I/O aggiuntive sono un costo delle prestazioni di TxF.
  • Quando si verifica un commit, TxF scarica prima tutte le informazioni di annullamento, quindi scarica le modifiche effettive del file e quindi scrive e scarica un record di commit. Se non sono presenti file di annullamento da scaricare, l'unico sovraccarico TxF aggiuntivo relativo all'I/O non transazionato è lo scaricamento stesso del log. Tuttavia, gli scaricamenti dei log comportano scritture sequenziali di grandi dimensioni efficienti, in modo che il costo delle prestazioni sia minimo.
  • TxF è ottimizzato per il commit. È previsto che la maggior parte delle transazioni abbia esito positivo e che non sia necessario eseguire il rollback, pertanto tutti i record di annullamento per una transazione dovrebbero andare inutilizzati. Dal punto di vista delle prestazioni, le operazioni di commit TxF sono veloci e i rollback sono a elevato utilizzo di risorse.
  • Il rollback è più intensivo delle risorse rispetto al commit. Durante il rollback, tutte le modifiche apportate nella transazione devono essere annullate. In generale, la durata del rollback può essere approssimativamente la stessa richiesta per apportare originariamente le modifiche. Ad esempio, se sono necessari 1 secondo per apportare tutte le modifiche, potrebbero essere necessari circa 1 secondo per annullarli. Per le transazioni molto lunghe, il rollback può creare effetti aggiuntivi sulle prestazioni. Ad esempio, il tempo di avvio del sistema può essere ritardato se il sistema deve eseguire automaticamente il rollback di una transazione nel caso in cui il sistema smette di rispondere e deve eseguire un riavvio non pianificato.

Le conclusioni di riepilogo sulle prestazioni che è possibile trarre dall'elenco precedente sono le seguenti:

  • Il costo delle prestazioni di TxF per le transazioni che coinvolgono sovrascrizioni di file può essere significativo.
  • Il costo delle prestazioni di TxF per le transazioni che coinvolgono solo le operazioni sui metadati può essere relativamente basso, a condizione che vengano usate transazioni di grandi dimensioni. Una transazione di grandi dimensioni è quando sono presenti molti record di annullamento per ogni record di commit.

Raccomandazioni per prestazioni ottimali

Ammortizzare il sovraccarico TxF sulle transazioni più grandi. Ad esempio, se sono disponibili set di modifiche N per apportare le modifiche in cui ogni modifica ha passaggi M ed è possibile eseguire questa operazione come N transazioni di M passaggi ciascuno o eseguire tutte le operazioni come singola transazione con M*N passaggi, quest'ultima opzione sarebbe più efficiente.

Prendere in considerazione il possibile impatto sull'avvio di transazioni molto grandi. Come indicato in precedenza, il rollback può essere lento e ritarderà il tempo di avvio se il sistema deve eseguire il rollback automatico come ora di avvio. Maggiore è la transazione, maggiore è il ritardo.

Mantenere le transazioni per la maggior parte delle operazioni sui metadati. Questo è ciò che TxF è ottimizzato per e, in generale, le prestazioni sono le stesse di I/O dei file non transazionati per transazioni di metadati di grandi dimensioni. Esempi di funzioni TxF di metadati efficienti sono MoveFileTransacted, SetFileAttributesTransacted, CopyFileTransacted, DeleteFileTransacted, CreateHardLinkTransactede scritture aggiunte (chiamate alla funzione WriteFile quando il puntatore al file come alla fine del file, o EOF). Un esempio di operazioni non metadati a elevato utilizzo di risorse è costituito dalle chiamate alla funzione WriteFile quando il puntatore al file non è in corrispondenza dell'EOF.

Riepilogo delle aspettative di prestazioni TxF

Per gli aggiornamenti sul posto, le sovrascrizioni in una sezione di un file saranno molto più lente dell'I/O dei file non transazionati, mentre le prestazioni TxF per le operazioni sui metadati del file system (ad esempio, creazione, spostamento e accodamento) sono paragonabili alle operazioni di I/O di file non transazioni per transazioni di grandi dimensioni.