web-dev-qa-db-pt.com

Como a compactação NTFS afeta o desempenho?

Ouvi dizer que a compactação NTFS pode reduzir o desempenho devido ao uso extra da CPU, mas li relatórios informando que ela pode realmente aumentar o desempenho devido à redução das leituras de disco. Como exatamente a compactação NTFS afeta o desempenho do sistema?

Notas:

  • Estou executando um laptop com um disco rígido de 5400 RPM, e muitas das coisas que faço nele são vinculadas a E/S.
  • O processador é um AMD Phenom II com quatro núcleos rodando a 2.0 GHz.
  • O sistema é desfragmentado regularmente usando ltraDefrag .
  • A carga de trabalho é mista de leitura/gravação, com leituras ocorrendo com um pouco mais de freqüência do que as gravações.
  • Os arquivos a serem compactados incluem um subconjunto selecionado de documentos pessoais (não a pasta base completa) e programas, incluindo vários jogos (menos exigentes) e o Visual Studio (que costuma ser I/O bound mais frequentemente do que não).
55
bwDraco

Ouvi dizer que a compactação NTFS pode reduzir o desempenho devido ao uso extra da CPU, mas li relatórios informando que ela pode realmente aumentar o desempenho devido à redução das leituras de disco.

Corrigir. Assumindo que sua CPU, usando algum algoritmo de compressão, pode compactar em C MB/se descompactar a D MB/s, e seu disco rígido possui velocidade de gravação W e velocidade de leitura R. Desde C> W, você obtém um ganho de desempenho quando escrevendo, e enquanto D> R, você obtém um ganho de desempenho ao ler. Esta é uma suposição drástica no caso de escrita, uma vez que o algoritmo de Lempel-Ziv (como implementado no software) tem uma taxa de compressão não determinística (embora possa ser restringido com um tamanho de dicionário limitado).

Como exatamente a compactação NTFS afeta o desempenho do sistema?

Bem, é exatamente confiando nas desigualdades acima. Contanto que seu processador possa manter uma taxa de compressão/descompressão acima da velocidade de gravação do disco rígido, você deverá experimentar um ganho de velocidade. No entanto, isso tem um efeito em arquivos grandes, que podem sofrer uma fragmentação pesada (devido ao algoritmo), ou não ser compactado de forma alguma .

Isso pode ser devido ao fato de que o algoritmo Lempel-Ziv diminui à medida que a compressão se move (já que o dicionário continua a crescer, exigindo mais comparações à medida que os bits entram). A descompressão é quase sempre a mesma taxa, independentemente do tamanho do arquivo, no algoritmo Lempel-Ziv (já que o dicionário pode ser endereçado usando um esquema base + offset).

A compactação também afeta como os arquivos são dispostos no disco . Por padrão, uma única "unidade de compactação" é 16 vezes o tamanho de um cluster (portanto, a maioria dos sistemas de arquivos NTFS de cluster de 4 kB exigirá blocos de 64 kB para armazenar arquivos), mas não aumenta além de 64 kB. No entanto, isso pode afetar os requisitos de fragmentação e espaço no disco.

Como nota final, a latência é outro valor interessante de discussão. Embora o tempo real necessário para compactar os dados apresente latência, quando a velocidade do clock da CPU está em gigahertz (ou seja, cada ciclo de clock é menor que 1 ns), a latência introduzida é insignificante comparada às taxas de busca do disco rígido ordem de milissegundos, ou milhões de ciclos de clock).


Para realmente ver se você experimentará um ganho de velocidade, há algumas coisas que você pode tentar. O primeiro é o benchmark de seu sistema com um algoritmo de compressão/descompactação baseado no Lempel-Ziv. Se você obtiver bons resultados (ou seja, C> W e D> R), tente ativar a compactação no disco.

A partir daí, você pode querer fazer mais referências sobre o desempenho real do disco rígido. Uma referência realmente importante (no seu caso) seria ver a velocidade com que seus jogos são carregados e ver a velocidade com que seus projetos do Visual Studio são compilados.

TL, DR: A compactação pode ser viável para um sistema de arquivos que utiliza muitos arquivos pequenos que exigem alta taxa de transferência e baixa latência. Arquivos grandes são (e devem ser) não afetados devido a problemas de desempenho e latência.

35
Breakthrough

Você tem um disco bem lento, então sua pergunta tem mérito. A compactação NTFS exige muito do processador e é ajustada para velocidade, em vez de eficiência de compactação.

Eu esperaria que você veria uma melhora (muito) pequena para operações de leitura. No entanto, ao acessar um arquivo que reside no cache do sistema, você terá um impacto no desempenho, já que ele terá que ser descompactado novamente em cada acesso.

Você certamente verá que as operações de gravação serão mais lentas devido à compactação adicional.

Copiar arquivos nesse mesmo disco NTFS requer descompactação e compactação, portanto, eles sofrerão mais.

A Compactação NTFS também pode aumentar significativamente a fragmentação, mas isso não é um problema para a maioria dos computadores 'típicos' sob cargas de trabalho 'típicas'.

Muitos tipos de arquivos, como imagens JPEG ou arquivos de vídeo ou .Zip, são basicamente não-compactáveis, portanto, esses arquivos serão mais lentos de usar e sem nenhum espaço salvo.

Arquivos menores que um cluster de disco (geralmente 4K) não são compactados, pois não há ganho. No entanto, às vezes, é recomendado diminuir o tamanho do cluster ao compactar todo o volume.

A compactação NTFS é recomendada para volumes ou arquivos relativamente estáticos. Nunca é recomendado para arquivos do sistema ou na pasta Usuários.

Mas como a configuração de hardware varia de um modelo de computador para outro, dependendo do disco, barramento, RAM e CPU, somente o teste dirá qual será o efeito exato da compactação no modelo do seu computador.

7
harrymc

Eu expliquei aqui na entrada do Wikpedia para NTFS:


O NTFS pode compactar arquivos usando o algoritmo LZNT1 (uma variante do LZ77 [23]). Os arquivos são compactados em blocos de 16 clusters. Com clusters de 4 kB, os arquivos são compactados em blocos de 64 kB. Se a compactação reduzir 64 kB de dados para 60 kB ou menos, o NTFS tratará as páginas desnecessárias de 4 kB como clusters vazios de arquivos esparsos - eles não são gravados. Isso permite tempos de acesso aleatório não razoáveis. No entanto, grandes arquivos compactáveis ​​tornam-se altamente fragmentados, então cada pedaço de 64 kB torna-se um fragmento menor. [24] [25] A compactação não é recomendada pela Microsoft para arquivos que excedam 30 MB devido ao impacto no desempenho. [Citação necessária]

O melhor uso da compactação é para arquivos que são repetitivos, raramente escritos, geralmente acessados ​​seqüencialmente e não compactados. Arquivos de log são um exemplo ideal. Compactar arquivos com menos de 4 kB ou já compactados (como .Zip ou .jpg ou .avi) pode torná-los maiores e mais lentos. [Carece de fontes?] Usuários devem evitar compactar executáveis ​​como .exe e .dll (eles podem ser paginou dentro e fora em 4 kB páginas). A compactação de arquivos do sistema usados ​​na inicialização, como drivers, NTLDR, winload.exe ou BOOTMGR, pode impedir que o sistema seja inicializado corretamente. [26]

Embora o acesso de leitura/gravação a arquivos compactados seja frequentemente, mas nem sempre [27] transparente, a Microsoft recomenda evitar a compactação em sistemas de servidor e/ou compartilhamentos de rede que mantêm perfis móveis porque sobrecarrega consideravelmente o processador. [28]

Sistemas de usuário único com espaço limitado no disco rígido podem se beneficiar da compactação NTFS para arquivos pequenos, de 4 kB a 64 kB ou mais, dependendo da compressibilidade. Arquivos com menos de 900 bytes são armazenados com a entrada de diretório na MFT. [29]

O link mais lento em um computador não é a CPU, mas a velocidade do disco rígido, portanto a compactação NTFS permite que o espaço de armazenamento limitado e lento seja melhor usado, em termos de espaço e (frequentemente) velocidade. [30] (Isso pressupõe que os fragmentos de arquivos compactados são armazenados consecutivamente.)


Eu recomendo a compactação apenas para arquivos que compactam para 64 KB ou menos (ou seja, 1 peça). Caso contrário, seu arquivo consistirá em muitas frações de 64 K ou menos.

MyDefrag faz um trabalho melhor de desfragmentação.

4
TomTrottier

Isso tornará as operações mais lentas. Infelizmente, não podemos medir exatamente quanto ou quão pouco afetará seu sistema. Quando um arquivo comprimido é aberto, o processador desativa o arquivo para que o sistema possa usá-lo; quando você terminar e clicar em Salvar, ele usa mais poder de processamento para compactá-lo novamente. Só você pode medir o desempenho embora.

1
Canadian Luke