Em um sistema moderno, o uso da compactação de disco me proporcionará um melhor desempenho geral?


10

Parece que o aumento da CPU ultrapassou a velocidade do disco por um tempo. Supondo que um desktop ou laptop com CPU Intel / AMD moderna de núcleo duplo e um único disco SATA médio, a compactação em quase todo o disco proporcionaria melhor desempenho geral? Basicamente, a largura de banda reduzida do disco compensa o aumento da carga da CPU? Tenho certeza de que a resposta real é "depende do que você está fazendo". Ao fazer esta pergunta, espero ter alguém que tenha feito esse problema e dar alguns exemplos ou armadilhas.


definir desempenho? Como no aumento de velocidade ou aumento de espaço? Você provavelmente não notaria nenhum aumento de velocidade, mas definitivamente consideraria úteis os bytes extras! :-p
Christopher Lightfoot

Respostas:


9

Sim, a compactação de disco pode fornecer um melhor desempenho em determinadas circunstâncias:

  • Seu aplicativo está vinculado à taxa de transferência de disco: CPUs modernas e algoritmos de (des) compressão podem ser executados com uma largura de banda muito maior do que os discos modernos em transferências longas. Qualquer redução na quantidade de dados movendo-se para ou de pratos de disco é uma vitória nesta circunstância
  • Leva menos tempo para (des) compactar os dados que vão para os pratos do que a diferença nos tempos de transferência, e você tem ciclos de CPU de sobra

Há uma razão pela qual o ZFS e o Btrfs, ambos os designs recentes de campo verde, incluem provisões para compactação.

No espaço HPC, quando um aplicativo está checando da memória para o disco, as CPUs frequentemente não estão fazendo nada útil. Desta vez é essencialmente pura sobrecarga. Qualquer uso das CPUs para reduzir esse tempo é uma vitória.


Os discos de streaming de mídia são provavelmente o único lugar onde os benefícios acontecem, pois o tamanho do pedaço é grande o suficiente. Os discos padrão do sistema operacional * sempre serão atingidos.
Ryaner

5
O streaming de mídia não é um aplicativo atraente para compactação no nível do sistema de armazenamento. Os dados já devem ser compactados em um formato específico da aplicação muito melhor.
Phil Miller

5

A compactação de disco nunca oferece melhor desempenho.

Pode não lhe dar quase nenhuma penalidade devido às CPUs modernas e velozes, mas isso é algo completamente diferente.

Você supõe que transferir menos dados de / para o disco pode melhorar o desempenho; mas as transferências de big data quase nunca são um gargalo de E / S: os gargalos reais são tempo e latência de busca. Os discos rígidos modernos são realmente rápidos em transferências de dados sustentadas com arquivos grandes, o que os atrasa são as pequenas transferências de todo o disco.

Alguns cenários:

  • Arquivos de mídia. Geralmente, eles já são compactados por conta própria (JPEG, MPEG, MP3), portanto, compactá-los no nível do sistema de arquivos não ajuda em nada; em vez disso, piorará as coisas, porque os recursos da CPU já são necessários para codificá-los / decodificá-los.
  • Bancos de dados. Essas são geralmente lidas / gravadas em pequenas explosões aleatórias; portanto, compactá-las não só não terá nenhum benefício, como também prejudicará o desempenho, pois o DBMS não pode identificar adequadamente em que disco os dados físicos que precisam acessar estão no disco. armazenado.
  • Arquivo de paginação. Isso geralmente é muito grande, mas o sistema operacional precisa endereçar pedaços muito pequenos de dados e precisa fazer isso com muita precisão ("Leia 4K no endereço físico X"); comprimir normalmente não é possível, mas mesmo se fosse, seria um completo desperdício de tempo e recursos: forneceria quase zero de compactação, devido à natureza "dados aleatórios completos" desse arquivo.

1
Então, transferir menos dados do disco não traz benefícios?
kbyrd 02/09/09

Editado para responder a isso :-)
Massimo

3
nunca é uma palavra muito limitada. A largura de banda bruta do disco e do barramento pci costuma ser o gargalo de parte do trabalho que faço. A compressão pode ajudar o desempenho muito, especialmente se você já tomaram medidas para remover alguns dos outros gargalos que você menciona
JamesRyan

1
Eu também hesitaria em dizer "nunca". Pode haver cenários em que a largura de banda do disco é o gargalo. Mas você provavelmente está certo de que este não é o caso típico.
sleske 03/09/09

2
disco I / O é quase sempre um gargalo em bancos de dados
Nick Kavadias

3

Existem situações específicas que já fazem isso no nível por aplicativo, como a compactação de vídeo - um sistema que não conseguiu ler vídeos brutos com qualidade HD com rapidez suficiente a partir de um dsk, mas pode ler informações compactadas e expandi-las usando a memória e a energia da CPU . Não há razão para que isso também não possa ser o caso de outras situações específicas, mas isso pode ser melhor tratado no nível do aplicativo, para que os métodos de compactação usados ​​sejam otimizados para seus propósitos.

Lembre-se de que a sobrecarga de desempenho da descompressão vale a pena se toda a taxa de transferência aumentar, portanto a idéia não deve ser descartada imediatamente - acho que ainda não estamos prontos para o desempenho de uso geral que aumenta a compactação, mas é teoricamente possível para negociar um recurso do qual você tem excesso (CPU e memória) para aumentar em outro lugar (total de dados lidos no disco rígido)


3

Você respondeu sua própria pergunta! depende é de fato a resposta.

A melhor generalização que posso fazer é:

Se você tiver um aplicativo de banco de dados com restrição de leitura de disco , sim! o desempenho é melhor.

Eu não acho que esse seja o caso da maioria das atividades que você fará em um desktop / laptop.

No meu domínio (SQL Server), eu sei que os bancos de dados de relatórios sob cargas pesadas de leitura podem obter melhor desempenho se a compactação for usada. Eu sei que o mesmo é verdade para o mysql.

A Microsoft tem um white paper sobre seus recursos de compactação no SQL Server 2008. Não é exatamente uma leitura leve, a menos que você seja um DBA, mas aqui está um gráfico que suporta minha generalização:

texto alternativo


0

As velocidades da CPU sempre foram mais rápidas que as velocidades do disco. IMHO, a compactação vai aumentar a sobrecarga e, assim, diminuir o desempenho.


mas isso depende do que você está fazendo :-)
Josh

Como assim? Uma sobrecarga aumentada é uma sobrecarga aumentada. Você não pode comprar dinheiro gastando dinheiro (a menos que seja dinheiro falso, mas isso é outra história).
587 Mark Henderson #

A função de compactar e descompactar arquivos, independentemente de serem menores ou não devido à compactação, introduzirá uma sobrecarga no desempenho. Quando o arquivo é lido do disco na memória, ele deve ser descompactado. Quando é gravado da memória no disco, ele deve ser compactado.
joeqwerty 03/09/09

3
mas se o seu processador estiver sentado sem fazer nada e a largura de banda do disco for o gargalo, ele acabará fazendo mais trabalho, mas o desempenho geral aumentará. Realmente depende de que tipo de dados você está recuperando e do que está fazendo com eles.
JamesRyan 03/09/09

0

Eu estava lendo algo parecido com isso ontem sobre o OSX e sua compactação do sistema de arquivos - Basicamente, a resposta gira em torno do que você deseja compactar - neste exemplo, ele está falando sobre os dados "FAT"; estruturas de arquivos, propriedades, metadados etc. que quando armazenados juntos podem ser compactados para economizar espaço e serem lidos no processador mais rapidamente do que procurar a cabeça em todo o lugar para encontrar os dados de cada arquivo ...

De qualquer forma, vale a pena ler se você está pensando sobre essas coisas :-p

Mas a compactação não consiste apenas em economizar espaço em disco. Também é um exemplo clássico de troca de ciclos de CPU por menor latência de E / S e largura de banda. Nas últimas décadas, o desempenho da CPU melhorou (e os recursos de computação são mais abundantes - mais sobre isso mais tarde) a uma taxa muito mais rápida do que o desempenho do disco. Os tempos modernos de busca no disco rígido e os atrasos rotacionais ainda são medidos em milissegundos. Em um milissegundo, uma CPU de 2 GHz passa por dois milhões de ciclos. E então, é claro, ainda há o tempo real de transferência de dados a considerar.

É verdade que vários níveis de cache em todo o sistema operacional e hardware funcionam poderosamente para ocultar esses atrasos. Mas esses bits precisam sair do disco em algum momento para preencher esses caches. Compressão significa que menos bits precisam ser transferidos. Dada a quantidade quase cômica de recursos da CPU em um Mac moderno com vários núcleos em uso normal, o tempo total necessário para transferir uma carga compactada do disco e usar a CPU para descomprimir seu conteúdo na memória ainda será geralmente muito menor que o tempo levaria para transferir os dados em formato não compactado.

Isso explica os benefícios potenciais de desempenho da transferência de menos dados, mas o uso de atributos estendidos para armazenar o conteúdo do arquivo também pode tornar as coisas mais rápidas. Tudo tem a ver com a localidade dos dados.

Se há algo que retarda mais o disco rígido do que a transferência de uma grande quantidade de dados, é mover a cabeça de uma parte do disco para outra. Cada movimento significa tempo para que a cabeça comece a se mover, pare e garanta que está posicionada corretamente sobre o local desejado, depois aguarde o disco giratório colocar os bits desejados embaixo. Tudo isso é real, físico, partes móveis, e é incrível que eles façam sua dança de maneira tão rápida e eficiente quanto eles, mas a física tem seus limites. Esses movimentos são os verdadeiros assassinos de desempenho para armazenamento rotacional como discos rígidos.

O formato de volume HFS + armazena todas as suas informações sobre arquivos - metadados - em dois locais principais no disco: o arquivo de catálogo, que armazena datas, permissões, propriedade e várias outras coisas, e o arquivo de atributos, que armazena "garfos nomeados" . "

Atributos estendidos no HFS + são implementados como garfos nomeados no arquivo de atributos. Mas, diferentemente dos bifurcações de recursos, que podem ser muito grandes (até o tamanho máximo de arquivo suportado pelo sistema de arquivos), os atributos estendidos no HFS + são armazenados "em linha" no arquivo de atributos. Na prática, isso significa um limite de cerca de 128 bytes por atributo. Mas isso também significa que a cabeça do disco não precisa fazer uma viagem para outra parte do disco para obter os dados reais.

Como você pode imaginar, os blocos de disco que compõem os arquivos Catalog e Attributes são freqüentemente acessados ​​e, portanto, são mais prováveis ​​do que a maioria em um cache em algum lugar. Tudo isso conspira para tornar o armazenamento completo de um arquivo, incluindo seus metadados em seus dados, nos arquivos de Catálogo e Atributos estruturados em árvore B, uma vitória no desempenho geral. Mesmo uma carga útil de oito bytes que aumenta para 25 bytes não é uma preocupação, desde que ainda seja menor que o tamanho do bloco de alocação para armazenamento normal de dados e desde que tudo caiba em um nó de árvore B no arquivo de atributos que o sistema operacional deve ler na íntegra de qualquer maneira.

Há outras contribuições significativas para a redução na pegada de disco do Snow Leopard (por exemplo, a remoção de localizações desnecessárias e arquivos "designable.nib"), mas a compactação HFS + é de longe a mais tecnicamente interessante.

De: http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/3


Já pensei nisso antes, mas esse artigo exato me levou a postar esta pergunta.
kbyrd 4/09/09

ri muito. Interessante :-p
Christopher Lightfoot

0

A compactação do Microsoft Disk é feia e antiga. É dificilmente comparável em proporções com o método ARJ dos anos 80. Porém, mesmo a compactação da Microsoft PODE fornecer melhor desempenho em discos rígidos muito lentos (laptop). Especialmente se houver RAM suficiente para armazenar em cache de gravação e impedir gravações excessivas.

O processo de gravação é um ponto fraco de qualquer método de compactação ativado por acesso aleatório.

Então, se você quiser unidade compactada, é melhor mudar para algum tipo de Linux.

A compactação de disco também é muito adequada para unidades de RAM, não é necessário dizer o porquê.


1
Você poderia adicionar alguns dados de suporte, talvez uma comparação de desempenho entre as soluções baseadas em Windows e Linux?
Psarossy

Sim, se você vai encontrar um tópico de 3,5 anos, é melhor trazer alguns fatos novos e concretos.
precisa saber é

-1

Duvidosamente. A compactação e descompactação envolve mais do que apenas o disco e a CPU; em particular, haverá muita transferência de dados para e da memória (além da sobrecarga de transferência padrão sem compactação), o que realmente prejudicará em termos de falhas de página.


-1

Resumindo, não, você provavelmente não obterá desempenho.

Embora a compactação melhore o desempenho do seu armazenamento, ela diminui significativamente a velocidade do processador. Provavelmente se resume a que tipo de arquivos você vai descompactar. Se você está lidando apenas com palavras, excel e outros tipos de arquivos básicos, vá em frente e comprima-os. Se os arquivos individuais forem mais volumosos, você estará sacrificando mais do seu tempo.

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.