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.