
Miglioramenti nelle prestazioni di exFAT: un decennio di innovazioni
Nel 2012, Microsoft ha introdotto la versione a 64 bit della sua Extended File Allocation Table (exFAT), che ha rappresentato una sostituzione moderna per il vecchio file system FAT32 a 32 bit. L’azienda ha compiuto un ulteriore passo significativo nel 2019 annunciando il supporto nativo per il formato exFAT sulle piattaforme Linux, segnando un momento chiave nell’evoluzione dell’interoperabilità del file system.
Sono emersi recenti progressi, in particolare grazie al contributo dell’ingegnere Sony Yuezhang Mo. Nel 2022, Mo ha scoperto che l’ottimizzazione dell’attraversamento delle voci di directory poteva migliorare le prestazioni di exFAT di un impressionante 57%.Questo miglioramento fondamentale è stato integrato nella versione 6.2 del kernel Linux, mostrando l’evoluzione continua della tecnologia del file system.
Ultimi sviluppi nell’ottimizzazione exFAT
Mo è tornato con ulteriori miglioramenti in una recente richiesta di pull mirata a perfezionare il file system exFAT. Le modifiche proposte includono diversi miglioramenti chiave che non solo migliorano le prestazioni, ma risolvono anche i problemi esistenti. Ecco un riepilogo dei miglioramenti inclusi in questa ultima presentazione:
Descrizione per questa richiesta pull:
- Risolve il problema della corruzione casuale dello stack e corregge gli errori in
exfat_get_block()
.- Migliorare
exfat_get_block()
ottimizzando i casi limite.- Risolve un problema di ciclo infinito relativo alle catene autocollegate in
exfat_find_last_cluster
.- Eliminare
EXFAT_CLUSTERS_UNTRACKED
i codici obsoleti.- Aggiungere controlli essenziali durante l’arresto.
- Migliora le prestazioni di eliminazione quando si utilizza l’opzione di montaggio di scarto.
L’opzione “discard mount” svolge un ruolo cruciale nel miglioramento delle prestazioni. Consente al file system di comunicare con il dispositivo di archiviazione per indicare quali blocchi non sono più necessari. Questa notifica in tempo reale consente una gestione efficiente dello spazio libero, contribuendo a semplificare le operazioni e a migliorare l’efficienza complessiva del file system.
La patch chiarisce:
Se l’opzione di montaggio di scarto è abilitata, i cluster liberati vengono scartati prontamente. L’elaborazione dei cluster uno alla volta può degradare le prestazioni, causando potenziali blocchi software quando viene liberato un gran numero di cluster. Questo aggiornamento migliora le prestazioni raggruppando l’operazione di scarto dei cluster contigui.
Misurazioni delle prestazioni: un miglioramento significativo
L’aumento delle prestazioni dovuto a questi miglioramenti è notevole. Il test ha coinvolto un file sostanziale da 80 GB, che in precedenza richiedeva circa 4 minuti e 46 secondi per essere eliminato. Dopo aver implementato le nuove ottimizzazioni, il tempo di eliminazione è crollato a meno di 2 secondi, ottenendo un sorprendente miglioramento delle prestazioni di 172 volte.
Le misurazioni delle prestazioni rivelano:
#
truncate -s 80G /mnt/file
#
time rm /mnt/file
Senza questo commit:
- reale 4m46.183s
- utente 0m0.000s
- sistema 0m12.863s
Con questo commit:
- reale 0m1.661s
- utente 0m0.000s
- sistema 0m0.017s
Per ulteriori dettagli su questa richiesta di pull, è possibile consultarla sulla Linux Kernel Mailing List (LKML).
Per ulteriori approfondimenti su questi miglioramenti delle prestazioni, puoi consultare l’ articolo originale.
Lascia un commento ▼