Windows com um sistema de arquivos melhor

14

Pelas minhas observações como desenvolvedor Java trabalhando em estações de trabalho Windows, o NTFS é lento comparado aos sistemas de arquivos Linux. A pergunta é: existe algo no driver NTFS que possa ser ajustado manualmente, por exemplo, para fornecer mais memória para cache? Habilitar alguns algoritmos experimentais? Se não estiver disponível, talvez exista outro sistema de arquivos que possa ser usado no Windows, talvez comercial, que seja mais rápido que o NTFS?

Para deixar claro, não estou procurando melhorar as velocidades de compilação para projetos Maven, gostaria de obter uma melhoria geral para o sistema operacional. Tenho a sensação de que o NTFS está desatualizado e lento há muito tempo em comparação com os sistemas de arquivos Linux. Parece-me estranho que o sistema operacional mais popular do planeta tenha apenas um sistema de arquivos que ainda requer desfragmentação manual. Talvez lá é uma alternativa?

Atualização: Aqui está o que é lento, de acordo com minhas observações. Estou construindo / empacotando um projeto, o que significa muitas operações de leitura / gravação no disco. O sistema de compilação é multiplataforma (Java, Maven), para que eu possa executar exatamente as mesmas ações quando inicializado no Ubuntu, por exemplo.

No Linux, minhas compilações são pelo menos 1/3 mais rápidas. Daí a pergunta sobre o sistema de arquivos. Me desculpe se está fora de lugar.

Yuri Ushakov
fonte
7
De que maneira o NTFS é lento? Como você está medindo sua velocidade para saber que é mais lenta que qualquer outro sistema de arquivos para exatamente as mesmas operações? O NTFS é o único sistema de arquivos com suporte nativo (além do FAT que possui limitações) do qual o próprio Windows pode inicializar, embora eu acredite que você possa obter um driver de sistema de arquivos ext3 para partições que não sejam de inicialização.
Mokubai
Sim, por favor, esclareça-nos, como o NTFS é lento?
JL.
1
Mas qual é a questão aqui? É assim que você pode acelerar o NTFS ou se o Windows pode usar um sistema de arquivos diferente?
Ivo Flipse 02/02
1
@ ivo-flipse: desculpe-me por causar confusão aqui, estou interessado em aprender algo sobre as duas perguntas. Como, não há alternativa comprovada ao NTFS no Windows? E, se não, seria possível aumentar geralmente o desempenho do NTFS, como dar mais memória a alguns caches ou ativar alguns mecanismos experimentais?
Yuri Ushakov 02/02
1
@ sinni800 Isso é apenas lixo, desculpe. Embora eu admita que, como sistema operacional para desktop, o Linux esteja longe de ser perfeito, como sistema operacional para servidor é muito melhor que o Windows para quase todas as cargas de trabalho. Não há dúvida de 96,6% dos 1 milhão de sites que usam um sistema operacional de qualidade beta.
Mjaggard # 9/16

Respostas:

3

Embora eu adorasse ver algo como o ZFS disponível para hosts do Windows, o NTFS não é um sistema de arquivos horrível. Ele suporta a maioria dos recursos "modernos" do sistema de arquivos (atributos estendidos, registro no diário, ACLs, etc.), mas é prejudicado pelo Explorer e pela maioria dos outros aplicativos que não suportam nenhum deles.

Uma coisa que absolutamente prejudicará seu desempenho é ter entradas "demais" em um diretório. Depois de passar algumas milhares de entradas em um diretório, tudo fica lento. Literalmente, a máquina inteira irá parar de aguardar que o NTFS crie ou remova entradas quando isso estiver acontecendo.

Eu costumava trabalhar com um aplicativo que gerava documentos baseados em HTML para assemblies .NET; criaria um arquivo por propriedade, método, classe, espaço para nome, etc. Para montagens maiores, veríamos 20 + k arquivos, todos despejados em um único diretório. A máquina passaria algumas horas durante a compilação bloqueada no NTFS.

Em teoria, o Windows suporta plug-ins de sistema de arquivos, o que tornaria o ZFS nativo, ext3 ou o que for possível (até o FUSE). Na prática, as APIs não são documentadas, portanto você fica completamente sozinho.

Agora, como você está desenvolvendo Java, você pode instalar um sistema operacional diferente em sua máquina ou usar uma VM em cima do Windows?

Além disso, você pode tentar alguns benchmarks de sistema de arquivos independentes de plataforma (iozone, bonnie ... provavelmente existem outros mais modernos que eu não conheço de cabeça, talvez até alguns escritos em Java) para ver se é na verdade, o sistema de arquivos está te impedindo ou se é outra coisa. Otimização prematura e tudo isso ...

chrish
fonte
O sistema de arquivos instaláveis ​​foi documentado pelo menos desde 2000. A falta de plug-ins sempre se resumia a dificuldade e falta de interesse. Ainda é difícil, mas o FUSE e o FSDK estão agora disponíveis.
user165568
5
  • Desativar a hora do último acesso
  • Desativar nomes curtos de arquivos
  • Desativar Excluir notificação
  • Desativar indexação
  • Desativar journeling
  • Desative a cópia de sombra e versons e cotas e compartilhamentos anteriores.
  • Ativar verificação transversal de desvio

Eu acho que a solução real seria reescrever seu sistema de compilação para que ele usasse a API nativa do sistema de arquivos do Windows, em vez da API unix (fopen etc) por baixo da estrutura de portabilidade. Mas isso não vai acontecer, então basicamente você está preso a qualquer nível de desempenho que eles considerassem aceitável.

Freqüentemente, ao usar sistemas não escritos originalmente para Windows, você descobre que o deslocamento de diretório foi muito mal tratado; portanto, verifique se você possui uma árvore de diretórios muito plana.

user165568
fonte
1
Essa seria uma resposta melhor se desse mais informações. 1. Alguma medida de quanto tempo pode ser economizado para cada um e 2. Como fazer essas alterações.
Mjaggard # 9/16
3

Há um sistema de arquivos suportado pelo novo sistema operacional Windows E é mais rápido que o NTFS. É exFAT. Existe a possibilidade de usá-lo para a unidade do sistema. Mas não se sabe quais complicações podem ter.

Certamente você pode usá-lo para outras partições. É mais rápido com operações aleatórias de leitura / gravação. Perfeito para um SSD, por exemplo.

sinni800
fonte
1
Tentei agora e o exFAT parece mais lento. Primeira compilação no NTFS: 36.083s, segunda: 19.884s. Primeira construção no exFAT: 41.160s, segunda: 27.291s.
Yuri Ushakov 02/02
Hã. O exFAT é o único outro sistema de arquivos que agora é suportado nativamente pelo Windows e pode ser usado como unidade do sistema (as permissões estão presentes). Vi um teste uma vez on-line e dizia que o exFAT era mais rápido com leituras aleatórias.
precisa saber é o seguinte
O motivo pelo qual o teste disse que o exFAT foi mais rápido foi provavelmente porque eles não o testaram em um diretório contendo entradas> 32768. Além disso, as versões mais recentes do Windows poderiam ter abrandado ainda mais devido a alterações internas. Deus (MS) sabe o que acontece em uma opendir()chamada (ou equivalente).
21417 MattBianco #
2

Você tem um programa antivírus em execução na verificação de acesso / gravação para a pasta do seu projeto?

Compilar envolve ler e gravar muitos arquivos pequenos em rápida sucessão, o que pode sobrecarregar o antivírus. Adicione a pasta do projeto à lista de pastas excluídas e veja se isso melhora a situação.

No Linux, você (provavelmente) não possui nenhum software antivírus ....

ChrisF
fonte
O Defender está desativado, o AV é desligado (ou desinstalado completamente, conforme o caso).
Yuri Ushakov 02/02
@Yuri - tudo bem.
ChrisF 02/02