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

10

Parece que os aumentos de CPU ultrapassaram a velocidade do disco por um tempo. Supondo que um desktop ou laptop com CPU Intel dual-core dual / AMD e um único disco SATA médio, a compactação na maioria dos discos ofereceria melhor desempenho geral? Basicamente, a largura de banda reduzida do disco é mais do que compensada pelo aumento da carga da CPU? Tenho certeza que a verdadeira resposta é "depende do que você está fazendo". Ao fazer essa pergunta, espero ter alguém que tenha feito esse cachimbo e dê alguns exemplos ou armadilhas.

    
por kbyrd 03.09.2009 / 00:59

9 respostas

10

Sim, a compactação de disco pode fornecer melhor desempenho em circunstâncias específicas:

  • A sua aplicação está ligada à taxa de transferência de disco: as CPUs modernas e os algoritmos de (de) compressão podem funcionar com uma largura de banda muito maior do que os discos modernos em transferências longas. Qualquer redução na quantidade de dados que se deslocam para ou de discos é uma vitória nesta circunstância
  • Demora menos tempo para (des) compactar os dados que estão indo para os discos do que a diferença nos tempos de transferência, e você tem ciclos de CPU de sobra

Existe uma razão pela qual tanto o ZFS quanto o Btrfs, ambos projetos recentes de campo verde, incluem provisões para compressão.

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

    
por 03.09.2009 / 03:37
5

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

Isso pode dar quase nenhuma penalidade devido a CPUs modernas e rápidas, mas isso é algo totalmente diferente.

Você supõe que ter que transferir menos dados de / para o disco pode melhorar o desempenho; mas grandes transferências de dados quase nunca são um gargalo de I / O: os gargalos reais são o tempo de busca e a latência. Discos rígidos modernos são muito rápidos em transferências sustentadas de dados com arquivos grandes, o que os atrasa são pequenas transferências de todo o disco.

Alguns cenários:

  • Arquivos de mídia. Normalmente, eles já estão compactados por conta própria (JPEG, MPEG, MP3), portanto, compactá-los no nível do sistema de arquivos não ajudará em nada; em vez disso, vai piorar as coisas, porque os recursos da CPU já são necessários para codificá-los / decodificá-los.
  • Bancos de dados. Geralmente, elas são lidas de / gravadas em pequenas rajadas aleatórias, portanto, compactá-las não apenas não terá nenhum benefício, mas também prejudicará o desempenho, já que o DBMS não pode identificar corretamente onde, no disco, os dados físicos que precisam acessar são armazenado.
  • arquivo de paginação. Isso geralmente é muito grande, mas o O.S. precisa lidar com pequenos pedaços de dados, e precisa fazer isso muito precisamente ("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 uma compactação quase zero, devido à natureza de "dados aleatórios completos" desse arquivo.
por 03.09.2009 / 01:02
3

Existem situações específicas que já fazem isso no nível da aplicação, como compactação de vídeo - um sistema que não consegue ler vídeo bruto com qualidade HD rápido o suficiente de um dsk pode ler informações compactadas e expandi-las usando memória e poder de CPU. Não há nenhuma razão para que isso não seja possível também para outras situações específicas, mas isso pode ser melhor tratado no nível do aplicativo, portanto, os métodos de compactação usados são otimizados para seu propósito.

Tenha em mente que a sobrecarga de desempenho da descompressão vale a pena se a taxa de transferência inteira aumentar, então a ideia não deve ser descartada - não acho que estamos prontos para o desempenho geral impulsionando a compactação ainda é teoricamente possível negociar um recurso em excesso (CPU e memória) para um aumento em outro lugar (total de dados lidos do disco rígido)

    
por 03.09.2009 / 02:23
3

Você respondeu sua própria pergunta! Depende é realmente a resposta.

A melhor generalização que eu posso fazer é:

Se você tem um aplicativo de banco de dados que é restrito a leitura de disco , então sim! o desempenho é melhor.

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

No meu domínio (SQL Server), sei que os bancos de dados de relatórios sob cargas de leitura pesadas podem obter melhor desempenho se a compactação for usada. Eu sei 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 claro lendo a menos que seja um DBA, mas aqui está um gráfico que suporta minha generalização:

    
por 03.09.2009 / 09:50
0

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

    
por 03.09.2009 / 01:00
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 na CPU mais rápido do que procurar a cabeça em todo lugar para encontrar os dados de cada arquivo ...

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

But compression isn't just about saving disk space. It's also a classic example of trading CPU cycles for decreased I/O latency and bandwidth. Over the past few decades, CPU performance has gotten better (and computing resources more plentiful—more on that later) at a much faster rate than disk performance has increased. Modern hard disk seek times and rotational delays are still measured in milliseconds. In one millisecond, a 2 GHz CPU goes through two million cycles. And then, of course, there's still the actual data transfer time to consider.

Granted, several levels of caching throughout the OS and hardware work mightily to hide these delays. But those bits have to come off the disk at some point to fill those caches. Compression means that fewer bits have to be transferred. Given the almost comical glut of CPU resources on a modern multi-core Mac under normal use, the total time needed to transfer a compressed payload from the disk and use the CPU to decompress its contents into memory will still usually be far less than the time it'd take to transfer the data in uncompressed form.

That explains the potential performance benefits of transferring less data, but the use of extended attributes to store file contents can actually make things faster, as well. It all has to do with data locality.

If there's one thing that slows down a hard disk more than transferring a large amount of data, it's moving its heads from one part of the disk to another. Every move means time for the head to start moving, then stop, then ensure that it's correctly positioned over the desired location, then wait for the spinning disk to put the desired bits beneath it. These are all real, physical, moving parts, and it's amazing that they do their dance as quickly and efficiently as they do, but physics has its limits. These motions are the real performance killers for rotational storage like hard disks.

The HFS+ volume format stores all its information about files—metadata—in two primary locations on disk: the Catalog File, which stores file dates, permissions, ownership, and a host of other things, and the Attributes File, which stores "named forks."

Extended attributes in HFS+ are implemented as named forks in the Attributes File. But unlike resource forks, which can be very large (up to the maximum file size supported by the file system), extended attributes in HFS+ are stored "inline" in the Attributes File. In practice, this means a limit of about 128 bytes per attribute. But it also means that the disk head doesn't need to take a trip to another part of the disk to get the actual data.

As you can imagine, the disk blocks that make up the Catalog and Attributes files are frequently accessed, and therefore more likely than most to be in a cache somewhere. All of this conspires to make the complete storage of a file, including both its metadata in its data, within the B-tree-structured Catalog and Attributes files an overall performance win. Even an eight-byte payload that balloons to 25 bytes is not a concern, as long as it's still less than the allocation block size for normal data storage, and as long as it all fits within a B-tree node in the Attributes File that the OS has to read in its entirety anyway.

There are other significant contributions to Snow Leopard's reduced disk footprint (e.g., the removal of unnecessary localizations and "designable.nib" files) but HFS+ compression is by far the most technically interesting.

De: link

    
por 03.09.2009 / 12:44
0

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

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

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

A compactação de disco também é muito adequada para unidades de memória RAM, não é necessário informar o motivo.

    
por 31.01.2013 / 07:16
-1

De maneira duvidosa. Compressão e descompressão envolve mais do que apenas o disco e a CPU; em particular, haverá muita transferência de dados de e para a 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.

    
por 03.09.2009 / 01:03
-1

Em suma, não, você provavelmente não ganhará desempenho.

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

    
por 03.09.2009 / 02:05