Windows con un filesystem migliore


14

Dalle mie osservazioni come sviluppatore Java che lavora su workstation Windows, NTFS è lento rispetto ai filesystem Linux. La domanda è: c'è qualcosa nel driver NTFS che può essere sintonizzato manualmente, ad esempio dare più memoria per la cache? Abilitare alcuni algoritmi sperimentali? Se questo non è disponibile, c'è forse un altro filesystem che può essere usato su Windows, forse anche commerciale, che è più veloce di NTFS?

Per essere chiari, non sto cercando di migliorare la velocità di compilazione per i progetti Maven, vorrei ottenere un miglioramento complessivo per il sistema operativo. Ho la sensazione che NTFS sia obsoleto e lento rispetto ai filesystem Linux. Mi sembra strano che il sistema operativo più popolare sul pianeta abbia un solo filesystem che richiede ancora la deframmentazione manuale. Forse c'è un'alternativa?

Aggiornamento: ecco cosa è lento secondo le mie osservazioni. Sto creando / impacchettando un progetto, il che significa molte operazioni di lettura / scrittura su disco. Il sistema di compilazione è multipiattaforma (Java, Maven), quindi posso eseguire esattamente le stesse azioni quando avviato ad Ubuntu, ad esempio.

Su Linux le mie build sono almeno 1/3 più veloci. Da qui la domanda sul filesystem. Mi dispiace se è fuori posto.


7
In che modo NTFS è lento? Come stai misurando la sua velocità per sapere che è più lento di qualsiasi altro filesystem esattamente per le stesse operazioni? NTFS è l'unico file system supportato in modo nativo (a parte FAT che presenta limitazioni) da cui è possibile avviare Windows stesso, anche se credo che potresti essere in grado di ottenere un driver di file system ext3 per partizioni non di avvio.
Mokubai

Sì, per favore illuminaci, come è lento NTFS?
JL.

1
Ma qual è la domanda qui? È possibile accelerare NTFS o se Windows può utilizzare un file system diverso?
Ivo Flipse

1
@ ivo-flipse: mi dispiace di aver creato confusione qui, sono interessato a imparare qualcosa su entrambe le domande. Ad esempio, non esiste un'alternativa comprovata a NTFS su Windows? E se no, sarebbe possibile aumentare in generale le prestazioni di NTFS, come dare più memoria ad alcune cache o abilitare alcuni meccanismi sperimentali?
Yuri Ushakov,

1
@ sinni800 È solo spazzatura, scusa. Mentre ammetto che come sistema operativo desktop, Linux è tutt'altro che perfetto, come sistema operativo server è molto meglio di Windows per quasi tutti i carichi di lavoro. Non c'è dubbio sul 96,6% dei primi 1 milione di siti Web che utilizzano un sistema operativo di qualità beta.
mjaggard,

Risposte:


3

Mentre mi piacerebbe vedere qualcosa di simile a ZFS disponibile per host Windows, NTFS non è un file system orribile. Supporta la maggior parte delle funzionalità "moderne" del file system (attributi estesi, journaling, ACL, tu lo chiami), ma è ostacolato da Explorer e dalla maggior parte delle altre app che non supportano nessuna di queste.

Una cosa che ucciderà assolutamente le sue prestazioni è avere "troppe" voci in una directory. Dopo aver passato un paio di migliaia di voci in una directory, tutto rallenta a una scansione. Letteralmente l'intera macchina si fermerà in attesa che NTFS crei o rimuova voci quando ciò accade.

Lavoravo con un'app che generava documenti basati su HTML per assembly .NET; creerebbe un file per proprietà, metodo, classe, spazio dei nomi, ecc. Per assiemi più grandi vedremmo 20 + k file, tutti ben scaricati in una singola directory. La macchina impiegherebbe un paio d'ore durante la generazione bloccata su NTFS.

In teoria, Windows supporta i plugin del filesystem, che renderebbero possibile ZFS nativo, ext3 o qualunque cosa (anche FUSE). In pratica, le API non sono documentate, quindi sei completamente da solo.

Ora, dal momento che stai sviluppando Java, potresti installare un sistema operativo diverso sul tuo computer o utilizzare una VM su Windows?

Inoltre, potresti voler provare alcuni benchmark di filesystem indipendenti dalla piattaforma (iozone, bonnie ... probabilmente ce ne sono di più moderni che non conosco dalla cima della mia testa, forse anche alcuni scritti in Java) per vedere se è in realtà il filesystem ti trattiene, o se è qualcos'altro. Ottimizzazione prematura e tutto ciò che ...


Il file system installabile è stato documentato almeno dal 2000. La mancanza di plug-in è sempre stata dovuta a difficoltà e mancanza di interesse. È ancora difficile, ma FUSE e FSDK sono ora disponibili.
user165568

5
  • Disattiva l'ora dell'ultimo accesso
  • Disattiva i nomi di file brevi
  • Disattiva Elimina notifica
  • Disattiva l'indicizzazione
  • Disabilita il journaling
  • Disabilita copia shadow e versi precedenti e quote e condivisioni.
  • Abilita il controllo della traversata di bypass

Immagino che la vera soluzione sarebbe quella di riscrivere il tuo sistema di compilazione in modo che utilizzasse l'API nativa del file system di Windows, anziché l'API unix (fopen ecc.) Stessa sotto il framework di portabilità. Ma questo non accadrà, quindi in pratica sei bloccato con qualsiasi livello di performance che ritenessero accettabile.

Spesso quando si utilizzano sistemi non originariamente scritti per Windows, si scopre che l'attraversamento delle directory è stato gestito in modo molto scadente, quindi assicurarsi di avere un albero di directory molto piatto.


1
Questa sarebbe una risposta migliore se fornisse ulteriori informazioni. 1. Qualche misura di quanto tempo potrebbe essere risparmiato per ciascuno e 2. Come fare questi cambiamenti.
mjaggard,

3

Esiste un file system supportato dal nuovo sistema operativo Windows ed è più veloce di NTFS. È exFAT. C'è la possibilità di usarlo per l'unità di sistema. Ma non si sa quali complicazioni potrebbe avere.

Puoi sicuramente usarlo per altre partizioni però. È più veloce con operazioni di lettura / scrittura casuali. Perfetto per un SSD per esempio.


1
Ho provato proprio ora, ed exFAT sembra più lento. Primo build su NTFS: 36.083s, secondo: 19.884s. Primo build su exFAT: 41.160s, secondo: 27.291s.
Yuri Ushakov,

Huh. exFAT è l'unico altro file system che è ora supportato nativamente da Windows e POTREBBE essere utilizzato come unità di sistema (sono presenti autorizzazioni). Ho visto un test una volta, online, e diceva che exFAT era più veloce con letture casuali.
sinni800,

La ragione per cui test ha detto che exFAT era più veloce era probabilmente perché non l'hanno testato su una directory contenente> 32768 voci. Inoltre, le versioni più recenti di Windows potrebbero essere ulteriormente rallentate a causa di modifiche interne. Dio (MS) sa cosa succede in una opendir()(o equivalente) chiamata.
MattBianco,

2

Hai un programma antivirus in esecuzione che sta eseguendo il controllo di accesso / scrittura per la cartella del tuo progetto?

La compilazione implica la lettura e la scrittura di molti piccoli file in rapida successione, che possono sopraffare lo scanner dei virus. Aggiungi la cartella del tuo progetto all'elenco delle cartelle escluse e verifica se ciò migliora la situazione.

Su Linux (probabilmente) non hai nessun software antivirus ....


Defender è spento, AV è spento (o disinstallato completamente, a seconda dei casi).
Yuri Ushakov,

@Yuri - vabbè.
ChrisF,
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.