Por que o Linux é 30x mais rápido que o Windows 10 em Copiando arquivos?


20

Eu tenho 20,3 Gig de arquivos e pastas, totalizando 100k + itens. Dupliquei todos esses arquivos em um diretório do Windows 10 e levei três horas de cópia excruciantes. Feito.

No outro dia, eu inicializei no Linux Fedora 24, copiei a mesma pasta e bam! Levei apenas 5 minutos para duplicá-lo no mesmo local, mas em um diretório diferente.

Por que o Linux é tão rápido? E o Windows é meticulosamente lento?

Há uma pergunta semelhante aqui

O algoritmo de cópia de arquivo (Ubuntu) Linux é melhor que o Windows 7?

Mas a resposta aceita está faltando.


Você não usa "Windows" ou "Linux" para copiar arquivos, usa algum programa específico em execução em cada um desses sistemas operacionais. Os programas variam amplamente nos métodos usados ​​e nas compensações que fazem. Quais você estava usando? E como?
precisa saber é o seguinte

5
@kreemoweet: O mesmo acontece com os sistemas operacionais - o NTFS do Windows é conhecido por lidar muito mal com muitos arquivos pequenos, em comparação com a maioria dos outros sistemas de arquivos.
user1686

2
E bom voto negativo de um fã do Windows, hein. Veja bem, a cópia de arquivos, apesar de simples, possui muitos aplicativos, desde backup de dados nos negócios até estudos científicos. Por exemplo, no CERN, há Petabytes de dados para lidar, a cópia lenta seria inaceitável.
Jones L

Nesse mesmo link - verifique a segunda resposta a partir da parte inferior. O Linux armazena em cache todos os arquivos na RAM disponível e grava no disco quando é possível - por isso, parece mais rápido (pois só precisa ler por enquanto e gravar quando pode).
Darius

Os sistemas de arquivos @DominicGuana fazem sua parte (ext3 / ext4 pode alocar partes de 100Mb de uma só vez). Você considerou que o antivírus no Windows também pode desempenhar um papel (lento)? BTW para problemas semelhantes com SLAC fluxo de aquisição de dados (após a 1ª gatilho nível havia muito dados) aprendemos a gravação em HDD em paralelo ...
Hastur

Respostas:


25

Os princípios básicos são divididos em alguns componentes principais do sistema total: o elemento da interface do usuário (a parte gráfica), o próprio kernel (o que fala com o hardware) e o formato no qual os dados são armazenados (ou seja, o sistema de arquivos )

Retrocedendo, NTFSé o fato de fato para o Windows há algum tempo, enquanto o fato de fato para as principais variantes do Linux é o extsistema de arquivos. O sistema de arquivos NTFS em si não mudou desde o Windows XP (2001), muitos recursos existentes (como redução / recuperação de partição, NTFS transacional etc.) são recursos do sistema operacional (Windows Vista / 7/8/10) e não o próprio NTFS. O extsistema de arquivos teve seu último grande lançamento estável ( ext4) em 2008. Como o próprio sistema de arquivos é o que governa como e onde os arquivos são acessados, se você estiver usando ext4, provavelmente haverá uma chance de notar uma melhoria na velocidade do NTFS; observe, no entanto, se você o usou, ext2pode perceber que é comparável em velocidade.

Pode ser que uma partição esteja formatada em partes menores que a outra. O padrão para a maioria dos sistemas é um 4096 byte 1 , 2 tamanho do cluster, mas se você formatou sua ext4partição para algo como 16k 3 em seguida, cada leitura no ext4sistema iria ficar 4x os dados contra o sistema NTFS (que poderia significar 4x os arquivos de acordo com o que está armazenado onde / como e qual o tamanho, etc.). A fragmentação dos arquivos também pode desempenhar um papel na velocidade. O NTFS lida com a fragmentação de arquivos de maneira muito diferente do extsistema de arquivos e, com mais de 100k de arquivos, há uma boa chance de haver alguma fragmentação.

O próximo componente é o próprio kernel (não a interface do usuário, mas o código que realmente fala com o hardware, o verdadeiro sistema operacional). Aqui, honestamente, não há muita diferença. Ambos os kernels podem ser configurados para executar determinadas ações, como armazenamento em cache / buffer de disco, para acelerar leituras e gravações percebidas, mas essas configurações geralmente têm as mesmas vantagens, independentemente do sistema operacional; por exemplo, o cache pode parecer aumentar enormemente a velocidade de copiar / salvar, mas se você perder energia durante a gravação do cache (ou retirar a unidade USB), perderá todos os dados que não foram realmente gravados no disco e possivelmente até os dados corrompidos já gravados para o disco.

Como exemplo, copie muitos arquivos para uma unidade USB formatada em FAT no Windows e Linux. No Windows, pode demorar 10 minutos, enquanto no Linux, 10 segundos; imediatamente depois de copiar os arquivos, remova a unidade com segurança ejetando-a. No Windows, ele seria imediatamente ejetado do sistema e, portanto, você poderia remover a unidade da porta USB, enquanto no Linux levaria 10 minutos para remover a unidade; isso ocorre por causa do cache (por exemplo, o Linux gravou os arquivos na RAM e os gravou no disco em segundo plano, enquanto o Windows sem cache gravou os arquivos imediatamente no disco).

Última é a interface do usuário (a parte gráfica com a qual o usuário interage). A interface do usuário pode ser uma janela bonita, com alguns gráficos interessantes e barras agradáveis ​​que me dão uma idéia geral de quantos arquivos estão sendo copiados, qual o tamanho e o tamanho de tudo; a interface do usuário também pode ser um console que não imprime nenhuma informação, exceto quando terminar. Se a interface do usuário precisar primeiro examinar cada pasta e arquivo para determinar quantos arquivos existem, mais o tamanho deles e fornecer uma estimativa aproximada antes que possa realmente começar a copiar, o processo de cópia poderá demorar mais devido à necessidade de interface do usuário. faça isso. Novamente, isso é verdade independentemente do sistema operacional.

Você pode configurar algumas coisas para serem iguais (como cache de disco ou tamanho do cluster), mas, falando realisticamente, simplesmente se resume a como todas as partes se unem para fazer o sistema funcionar e, mais especificamente, com que freqüência essas partes do código são atualizadas. O sistema operacional Windows percorreu um longo caminho desde o Windows XP, mas o subsistema de disco é uma área que não vê muito TLC no sistema operacional em todas as versões há muitos anos (em comparação com o ecossistema Linux que parece ter um novo FS ou melhoria com bastante frequência).

Espero que isso adicione alguma clareza.


Resposta horrível na minha opinião e votada. Você está introduzindo diferenças onde não existem. Ninguém perguntou como as unidades particionadas diferiam. É claro que a questão se concentra no preceito "tudo o mais é igual". Posso escolher um fs para um raid0 de 8 nvme da maneira que desejar, com velocidades de leitura nativas acima de 16 gigabytes por segundo e, no entanto, uma cópia de arquivo do Windows atinge o máximo de 1,4 a 1,5 gigabytes a qualquer momento, o tempo todo. Não tem nada a ver com cache, fs, partições, mas mais com as limitações do sistema operacional Windows.
Matthias Wolf

@ Mat em que sistema de arquivos você está formatando a matriz RAID? Se for NTFS, isso poderia explicar a desaceleração. Mas se você tiver mais informações para fornecer, poderá adicionar uma resposta relevante, especialmente se tiver algum código-fonte (e não um dump de montagem) no SO principal do Windows para explicar diretamente por que ocorre essa desaceleração (eu particularmente estaria interessado nisso!).
txtechhelp

Eu uso NTFS, que melhor opção existe como FS em um servidor Windows?
Matthias Wolf

Entrei em contato com a MSFT e tive muitas discussões e tentei muitas coisas ao longo dos anos e nunca consegui exceder 1,5 GB / segundo, apesar de possuir placas de rede de 100 Gb em cada máquina e ter todo o outro tráfego por ferramentas de perfil Mellanox, mostrando que as conexões estão funcionando perfeitamente bem em Taxa de transferência de 94-95Gb / s. Não há lentidão entre máquinas Linux, mas assim que uma máquina Windows OS está envolvido vejo esses gargalos
Matthias Lobo

Estou falando de transferências de arquivos únicos, todas com thread único. Não há nenhum gargalo de hardware, é puramente baseado em SO.
Matthias Wolf
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.