web-dev-qa-db-pt.com

Compactação NTFS no SSD - altos e baixos

Este tópico discute a compactação NTFS nos HDDs como um método para melhorar o desempenho do acesso ao disco e conclui que é ruim com mais frequência do que isso. Mas sempre vi a compressão como uma maneira de economizar espaço e aprendi sua eficácia nisso. E agora eu tenho um SSD onde o espaço é caro e a penalidade de desempenho e. g. para ler/escrever 2 clusters em vez de 1 é muito menor.

Por outro lado, como os SSDs são muito mais rápidos que os HDDs, eu esperaria que uma taxa de transferência mais alta resultasse em maior uso da CPU. Isso pode se tornar um problema? Quaisquer outros pensamentos sobre o assunto?

Eu gosto do efeito de economia de espaço, não é enorme, mas está lá. Se o desempenho é uma preocupação, no entanto, prefiro desativá-lo:

enter image description here

10
Violet Giraffe

Microsoft escreveu isso há algum tempo em um blog :

O NTFS compacta os arquivos dividindo o fluxo de dados em UCs (isso é semelhante à forma como os arquivos esparsos funcionam). Quando o conteúdo do fluxo é criado ou alterado, cada CU no fluxo de dados é compactada individualmente. Se a compactação resultar em uma redução de um ou mais clusters, a unidade compactada será gravada no disco em seu formato compactado. Em seguida, uma faixa de VCN esparsa é alinhada ao final da faixa de VCN compactada para fins de alinhamento (como mostrado no exemplo abaixo). Se os dados não compactarem o suficiente para reduzir o tamanho em um cluster, toda a UC será gravada no disco em sua forma não compactada.

Esse design torna o acesso aleatório muito rápido, pois apenas uma UC precisa ser descompactada para acessar qualquer VCN único no arquivo. Infelizmente, o acesso seqüencial grande será relativamente mais lento, pois é necessária a descompactação de muitas UCs ​​para executar operações sequenciais (como backups).

E em um artigo KB escreve isso :

Embora a compactação do sistema de arquivos NTFS possa economizar espaço em disco, a compactação de dados pode afetar adversamente o desempenho. A compactação NTFS possui as seguintes características de desempenho. Quando você copia ou move um arquivo NTFS compactado para uma pasta diferente, o NTFS descompacta o arquivo, copia ou move o arquivo para o novo local e, em seguida, recompacta o arquivo. Esse comportamento ocorre mesmo quando o arquivo é copiado ou movido entre pastas no mesmo computador. Os arquivos compactados também são expandidos antes de copiar pela rede, para que a compactação NTFS não economize largura de banda da rede.

Como a compactação NTFS é intensiva para o processador, o custo de desempenho é mais perceptível nos servidores, que geralmente são vinculados ao processador. Servidores fortemente carregados com muito tráfego de gravação são candidatos ruins à compactação de dados. No entanto, você pode não ter uma degradação significativa no desempenho com servidores somente leitura, principalmente leitura ou pouco carregados.

Se você executar um programa que usa o log de transações e que grava constantemente em um banco de dados ou log, configure o programa para armazenar seus arquivos em um volume que não é compactado. Se um programa modificar dados através de seções mapeadas em um arquivo compactado, o programa poderá produzir páginas "sujas" mais rapidamente do que o gravador mapeado pode escrevê-las. Programas como o Microsoft Message Queuing (também conhecido como MSMQ) não funcionam com a compactação NTFS devido a esse problema.

Como as pastas iniciais do usuário e os perfis móveis usam muitas operações de leitura e gravação, a Microsoft recomenda que você coloque as pastas pessoais e os perfis móveis em um volume que não tenha compactação NTFS na pasta pai ou na raiz do volume.


Resumo:

compactar apenas arquivos pequenos que nunca mudam (apenas leituras e sem gravações) porque as leituras são rápidas, mas as gravações exigem descompactação e nova compactação, que consome energia da CPU e o tipo de armazenamento não é tão importante.

10
magicandre1981

Como Claudio diz muitas coisas em detalhes, vou retomar sua opinião, que também é minha, e vi os mesmos efeitos depois de tentar o que ele diz.

Para SSD, a compactação NTFS não deve ser usada.

Agora vou enumerar alguns motivos para tal afirmação:

Motivo Nº1: Ele mata o SSD musch mais rápido, uma vez que faz duas gravações; A compactação NTFS sempre grava dados não compactados antes de iniciar a compactação em RAM e reescreve os dados compactados apenas se houver um ganho de pelo menos 4KiB.

Motivo Nº2: o uso do cluster NTFS 4KiB em um SSD está perdendo 50% da velocidade do SSD, verifique qualquer benchmark e verá que os blocos de 128KiB tornam o SSD duas vezes mais rápido que o uso de blocos de 4KiB, e a compactação NTFS pode ser usada apenas em partições NTFS de cluster 4KiB.

Motivo Nº3: Existem contêineres (como o PISMO File Mount) que podem criar um contêiner visto como compactação e/ou criptografia dinamicamente, tais conteúdos fazem a compactação em RAM e não enviam dados descompactados para disco antes de reescrever em formato compactado, além disso, o PISMO obtém uma taxa de compactação melhor que o NTFS.

Existem muito mais motivos, mas esses são os principais mais importantes.

O ponto otrer é SPEED, qualquer compactação é feita na CPU; portanto, se você não tiver uma CPU muito rápida (o mono-thread é usado para isso no NTFS enquanto o multi-thread é usado em alguns contêineres) verá a leitura/gravação muito lenta quando comprimido; o pior é que você pode ter uma CPU muito rápida, mas se ela estiver sendo usada para outras coisas (como renderização, transcodificação, etc.), não haverá CPU para compactação; portanto, novamente, você terá um desempenho ruim.

A compactação NTFS é boa apenas para discos lentos tradicionais quando você tem CPU sem muito uso, mas requer uma boa desfragmentação após cada gravação (no nível do arquivo), porque cada bloco de 64KiB (compactado ou não) é gravado em uma posição múltipla de 64KiB; a única maneira de compactar esses fragmentos é depois da compactação (ou gravação em uma pasta compactada), desfragmentando esse arquivo.

P.D .: Cuidado, estamos falando do Windows em hardware real, não em máquinas virtuais; o importante é quem escreve no meio físico; outros podem ter camadas de cache que podem mitigar os efeitos e também melhorar muito as coisas.

4
Laura

Ninguém fala sobre o problema principal em não SSD, é fragmentação.

Cada bloco de 64KiB é gravado onde estaria sem compactação, mas pode ser compactado, pelo menos é <= 60KiB; depois, grava menos de 64KiB; o bloco de nidificação de bits irá para onde iria, como se o anterior não estivesse. comprimir, então um monte de lacunas apèars.

Teste-o com um arquivo de vários gigabytes de uma máquina virtusl de qualquer sistema Windows (eles tendem a ser reduzidos em 50%, mas com enormes> 10000 fragmentos).

E para SSDs há algo que não foi dito, como diabos isso escreve? Quero dizer, se ele o escreve sem compactação e o substitui com a versão compactada (para cada mega bloco de 64 KiB), a vida do SSD é muito reduzida; mas se ele gravá-lo diretamente no formato compactado, o SSD live pode ser maior ou menor ... mais se você escrever esse 64KiB apenas de uma vez, mais curto, muito mais curto se você escrever esse 64KiB em 4KiB, porque ele gravará 64KiB (na forma compactada) tantas vezes quanto 64/4 = 16 vezes.

A penalidade de desempenho é causada porque o tempo de CPU necessário para compactar/descompactar é maior que o tempo ganho, não sendo necessário gravar blocos 4KiB ... portanto, com uma CPU muito rápida e uma compressão de disco muito lenta, reduz o tempo de gravação e leitura, mas se o SSD é muito rápido e a CPU é bastante lenta, ele escreverá muito mais devagar.

Quando falo de CPU rápida ou lenta, quero dizer que, nesse momento, a CPU pode ser usada por 'matemática' ou outro processo; portanto, pense sempre em CPU livre, não em especificações de CPU no papel, o mesmo vale para disco/SSD, ele pode estar em uso por vários processos.

Digamos que o 7Zip grave um arquivo enorme de outro disco com o LZMA2, ele usará muita CPU; portanto, ao copiar um arquivo compactado NTFS, ele não terá CPU livre, portanto, será mais lento do que sem o NTFS compactação, mas assim que o 7Zip terminar de usar a CPU, essa CPU poderá compactar NTFS mais rapidamente e, nesse momento, a compactação NTFS poderá fazer as coisas mais rapidamente.

Pessoalmente, nunca uso compactação NTFS, prefiro contêineres PFO de montagem de arquivo PISMO (com compactação e também permite a inscrição, tanto em tempo real quanto transparente para aplicativos), oferece uma taxa de compressão muito melhor e menos impacto na CPU, enquanto é uma leitura e escreva em tempo real, sem necessidade de descompactar antes do uso, basta montá-lo e usá-lo no modo de leitura e gravação.

Como o PISMO faz compactação em RAM antes de gravar no disco, ele pode fazer com que o SSD dure mais, meus testes de compactação NTFS me fazem pensar em enviar dados para o disco duas vezes, primeiro descompactado e depois se puder compactar é sobrescrito na forma compactada.

Por que a velocidade de gravação compactada NTFS no meu SSD é quase a metade da não compactada com arquivos do que a compactação em quase 1/2 do seu tamanho ou em tamanhos compactados inferiores? No meu AMD Threadripper 2950 (32 núcleos e 64 threads) com 128GiB de ram (CPU rápida, CPU muito rápida) com menos de 1% de uso, por isso há CPU suficiente para fazer a compactação mais rapidamente do que a velocidade secional máxima do SSD, talvez porque A compactação NTFS é iniciada depois que os blocos de 64 KB são enviados para o disco não compactado e substituídos pela versão compactada ... oh, se eu fizer isso em uma máquina virtual executando o Linux no Host e o Windows no convidado, o cache do Linux informa que esses clusters são gravados duas vezes , e a velocidade é muito, muito mais rápida (o Linux está armazenando em cache as gravações NTFS não compactadas enviadas pelo Windows Guest e, uma vez que elas são substituídas por dados compactados, o linux não envia dados não compactados para o disco, o cache de gravação do Linux !!!).

Minha recomendação, não use a compactação NTFS, exceto em máquinas virtuais que os hóspedes executem janelas se o Host for Linux e nunca se você usar muito a CPU, se a CPU não for rápida o suficiente.

O SSD moderno tem um enorme cache ram interno, de modo que a gravação + overwtite causada pela compactação NTFS pode ser atenuada pelo sistema de cache interno SSD.

Meus testes foram feitos em SSD "bonitos" sem RAM interno para cache dentro do SSD, quando eu os repito naqueles com cache ram, a velocidade de gravação é rápida, mas não como se poderia pensar.

Faça seus próprios testes e use tamanhos enormes de arquivos (maior que o total de tam instalado para evitar resultados ocultos do cache).

A propósito, algo que algumas pessoas não sabem sobre o vompression NTFS ... qualquer arquivo de 4KiB ou menos nunca será compactado com NTFS porque não há como reduzir seu tamanho pelo menos em 4KiB.

A copressão NTFS retira 64KiB, compacta-os e, se puder reduzir um cluster (4KiB), então é gravado comprimido, 64KiB são 16 blocos de 4KiB (consecutivos).

Se um arquivo de 8KiB quando a compactação terminar, o resultado final for superior a 4KiB, ele não salvará nenhum cluster; portanto, ele será gravado não compactado ... e assim por diante ... a pressão deverá ganhar pelo menos 4KiB.

Ah, e para a compactação NTFS, o NTFS deve ter o tamanho de cluster de 4KiB.

Tente fazer um teste: Use o cluster de 128KiB em um NTFS no SSD; você verá um enorme desempenho melhorar a velocidade de gravação e leitura.

Os sistemas de arquivos no SSD com cluster 4KiB estão perdendo muita velocidade, na maioria dos casos mais de 50% perdidos ... veja qualquer benchmark por aí que teste com tamanhos de bloco diferentes, de 512Bytes a 2MiB, a maioria dos SSD grava em dobro velocidade quando no tamanho do cluster de 64KiB (ou 128KiB) do que no 4KiB.

Deseja uma verdadeira motivação no seu SSD? Não use o cluster 4KiB no sistema de arquivos, use 128KiB.

Use o cluster 4KiB apenas se mais de 99% dos seus arquivos forem inferiores a 128KiB.

Etc, etc, etc ... teste, teste e teste seu próprio caso.

Nota: Crie a partição NTFS do sistema com diskpart no modo console ao instalar o Windows com um cluster de 128KiB ou de outro Windows, mas não permita que o Windows seja formatado enquanto estiver na parte gráfica do instalador (ele sempre será formatado como NTFS do cluster 4KiB).

Agora, todo o meu Windows está instalado na partição NTFS do cluster de 128KiB em> 400GiB SSD (SLC).

Espero que as coisas fiquem claras, o M $ não está dizendo como o iy escreve o NTFS compactado, meus testes me dizem que ele escreve duas vezes (64KiB descompactados e, em seguida, <= 60KiB compreensed), não apenas uma vez (cuidado com isso se estiver no SSD).

Cuidado: o Windows tenta compactar NTFS alguns diretórios internos, não importa se você não comprime NTFS, a única maneira de realmente evitá-lo se o tamanho do cluster NFTS for diferente de 4KiB, pois a compactação NTFS só funciona em partições NTFS com tamanho de cluster 4KiB

0
Claudio