En hızlı GZIP yardımcı programı


18

En hızlı gzip(veya zip) yardımcı programını arıyorum . LVM hacmim% 95 boş olandan var 0, bu yüzden sıkıştırmak çok kolay. En hızlı çözümü arıyorum ve 0's dışında sıkıştırma gerçekten umurumda değil .

Farkındayım gzip -1(aynı gzip --fast) ama daha hızlı bir yöntem olup olmadığını merak ediyordum.

Teşekkürler.

Düzenleme: Bazı testlerden sonra, ben karşılaştırıldığında gzip -1, lzop -1ve pigz -1birbirleri ile ve aşağıdaki sonuçlara geldi:

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

Düzenleme 2 :

Bu benim ilk sorumla ilgisiz, ancak time dd if=/dev/VPS/snap | lzop -1 | ssh backup-server "dd of=/home/backupvps/snap.lzop"(blok boyutu 16M olarak değiştirildi) kullanarak zaman azalır real 18m22.442s!


1
Dikkatli olun: timeBöyle kullanmak biraz haksızlık . Kullanılan dd'nin verimi pigzdiğer ikisinden daha düşüktür.
— Henk

@Devator: zamanlamalara bakarak şu anda baytları şifreli ssh tünelinden itmenin darboğaz olduğu sonucuna varabiliriz. "-c" (sıkıştırma) bayrağıyla ssh kullanmaya ve ön kompresörü denklemden çıkarmaya çalıştınız mı? daha hızlı bir şifreleme algoritmasına da geçebilirsiniz. bunun dışında: ssh-tüneli olmadan yeniden kıyaslama (örneğin, çıkış lavabosu olarak / dev / null kullanarak)
— akira

Sidenote olarak, seyrek bir dosya kullanabilir misiniz ? Sonra sıfırlar diskte yer kaplamaz.
— Sıkışmanız

@ Li-aungYip Bence "dosyalar" LVM birimleridir.
— Devator

Ah, anlıyorum. Sürdürmek!
— Li-aung Yip

Yanıtlar:



23

Kişisel olarak henüz kullanmama rağmen, paralel gzip kullanmak işleri biraz hızlandırabilir:

gzip'in paralel uygulanması anlamına gelen pigz, verileri sıkıştırırken birden çok işlemciyi ve birden çok çekirdeği sömürüye kullanan gzip'in tamamen işlevsel bir yerine geçer.


1
Ben rutin olarak kullanmak ve birden çok çekirdek varsa kesinlikle pigz öneririz. Sıkıştırma seviyesini değiştirmek dışında, bu, sıkıştırmayı hızlandırmanın açık ve anlaşılır yoludur.
— jgrundstad

3
Site biraz tuhaf görünüyor. Ama buna aldanmayın, pigz gzip ve zlib geliştiricilerinden Mark Adler tarafından yazılmıştır.
— so_mv

Bu noktada proje terk edilmiş gibi görünüyor.
— AlexLordThorsen

Bunu "kararlı" olarak düşünmeyi tercih ediyorum. Sık güncellenmez, ancak güncellenir.
— Alan De Smet

7

Paralel Gzip'i (Pascal bağlandı) veya Paralel BZIP'yi deneyebilirsiniz.
Teorik olarak, BZIP metin için çok daha iyidir, bu yüzden pbzip'i denemek isteyebilirsiniz .


2

Diskiniz 30MB / s ile sınırlıdır

Tüm kompresörler yeterince iyi çalışıyor. Ağ aktarımını biraz daha yavaş ama her yerde bulunan bzip2 kullanarak bile azaltabilirsiniz.

$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

Rsync'i düşündünüz mü? Sadece toplamı kontrol eder ve daha sonra farkı fark eder.


1
Diskim 30 MB / sn ile sınırlı değil. Testini yeni çalıştırdım: pigz -1: 1073741824 bytes (1.1 GB) copied, 8.6779 seconds, 124 MB/sve gzip -1: 1073741824 bytes (1.1 GB) copied, 11.6724 seconds, 92.0 MB/s. Ben rsync düşündüm ama bu dosya farklı kontrol eder ve çoğu zaman çok değişti, muhtemelen yardımcı olmaz.
— Devator

Sıfırları aktarıyorsanız, bzip2 kodlamasının ne kadar etkileyici olduğuna bakın. Sadece hangi tarafta hızı ölçüyorsunuz .... 4Mbit / s pigz, ortak bir DSL hattı için çok fazla olabilir ... Diskiniz bu kadar hızlıysa daha da kötüleşir.
— Mart'ta ZaB

2

Re: lzop std yapılandırmada daha yavaş ... Tweaking zamanın yarısı olabilir. Ancak blosc adı verilen daha hızlı bir değiştirme var:

https://github.com/FrancescAlted/blosc

Hmm ... Bunu göndermek ve cevap almak için gereken zaman muhtemelen en az iki kat tasarruf olsun ama ... 2 saniye önyükleme zaman başka bir .1s tıraş için çekirdeğimi derlerken şimdi affedersiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.