Utilitário GZIP mais rápido

16

Estou procurando o utilitário gzip (ou zip) mais rápido. Eu tenho um volume LVM que 95% existe em branco 0 , então compactar isso é muito fácil. Estou procurando a solução mais rápida e não me importo com a compactação, exceto a 0 's.

Estou ciente de gzip -1 (o mesmo que gzip --fast ), mas queria saber se existe algum método mais rápido.

Obrigado.

Editar: depois de alguns testes, comparei gzip -1 , lzop -1 e pigz -1 entre si e cheguei aos seguintes resultados:

PIGZ:

time dd if=/dev/VPS/snap | pigz -1 | ssh backup-server "dd of=/home/backupvps/snap.pigz"

104857600+0 records in
104857600+0 records out
53687091200 bytes (54 GB) copied, 2086.87 seconds, 25.7 MB/s
7093985+266013 records in
7163950+1 records out
3667942715 bytes (3.7 GB) copied, 2085.75 seconds, 1.8 MB/s

real    34m47.147s

LZOP:

time dd if=/dev/VPS/snap | lzop -1 | ssh backup-server "dd of=/home/backupvps/snap.lzop"

104857600+0 records in
104857600+0 records out
53687091200 bytes (54 GB) copied, 1829.31 seconds, 29.3 MB/s
7914243+311979 records in
7937728+1 records out
4064117245 bytes (4.1 GB) copied, 1828.08 seconds, 2.2 MB/s

real    30m29.430s

GZIP:

time dd if=/dev/VPS/snap | gzip -1 | ssh backup-server "dd of=/home/backupvps/snap_gzip.img.gz

104857600+0 records in
104857600+0 records out
53687091200 bytes (54 GB) copied, 1843.61 seconds, 29.1 MB/s
7176193+42 records in
7176214+1 records out
3674221747 bytes (3.7 GB) copied, 1842.09 seconds, 2.0 MB/s

real    30m43.846s

Editar 2 :

Isso não está relacionado à minha pergunta inicial, no entanto, usando time dd if=/dev/VPS/snap | lzop -1 | ssh backup-server "dd of=/home/backupvps/snap.lzop" (tamanho do bloco alterado para 16M), o tempo é reduzido para real 18m22.442s !

    
por Devator 14.03.2012 / 14:45

5 respostas

13

Se você não se importar em se afastar do DEFLATE, lzop é uma implementação do LZO que favorece a velocidade sobre a taxa de compactação.

    
por 14.03.2012 / 14:50
22

Embora eu pessoalmente ainda não o usei, acho que usar o gzip paralelo pode acelerar um pouco as coisas:

pigz, which stands for parallel implementation of gzip, is a fully functional replacement for gzip that exploits multiple processors and multiple cores to the hilt when compressing data.

    
por 14.03.2012 / 14:51
7

Você pode tentar o Gzip Paralelo (Pascal o vincula) ou o Parallel BZIP.
Em teoria, o BZIP é muito melhor para texto, então você pode querer tentar pbzip .

    
por 14.03.2012 / 14:55
2

O seu disco está limitado a 30MB / s

Todos os compressores fazem bem o suficiente. Você pode até reduzir a transferência de rede usando um bzip2 ligeiramente mais lento mas onipresente.

$dd if=/dev/zero bs=2M count=512 | pigz -1 | dd > /dev/null
512+0 records in
512+0 records out
1073741824 bytes (1.1 GB) copied, 9.12679 s, 118 MB/s
8192+7909 records in
9488+1 records out
4857870 bytes (4.9 MB) copied, 9.13024 s, 532 kB/s
$dd if=/dev/zero bs=2M count=512 | bzip2 -1 | dd > /dev/null
512+0 records in
512+0 records out
1073741824 bytes (1.1 GB) copied, 37.4471 s, 28.7 MB/s
12+1 records in
12+1 records out
6533 bytes (6.5 kB) copied, 37.4981 s, 0.2 kB/s
$dd if=/dev/zero bs=2M count=512 | gzip -1 | dd > /dev/null
512+0 records in
512+0 records out
1073741824 bytes (1.1 GB) copied, 14.305 s, 75.1 MB/s
9147+1 records in
9147+1 records out
4683762 bytes (4.7 MB) copied, 14.3048 s, 327 kB/s

Já considerou o rsync? Ele faz checksum e gzip apenas a diferença.

    
por 14.03.2012 / 22:57
2

Re: lzop é mais lento em sua configuração std ... Tweaking pode metade do tempo. Mas há uma substituição ainda mais rápida chamada blosc:

link

Hmm ... O tempo que demorou para postar isso e obter respostas provavelmente é pelo menos o dobro de economia de tempo que você terá ... Agora me desculpe enquanto recompilo meu kernel para remover outro .1s dos meus 2s tempo de inicialização.

    
por 15.03.2012 / 08:05