Utilitas GZIP tercepat


18

Saya mencari gziputilitas tercepat (atau zip). Saya memiliki volume LVM yang 95% ada dari kosong 0, jadi mengompresi itu sangat mudah. Saya mencari solusi paling cepat, dan tidak terlalu peduli dengan kompresi kecuali 0.

Saya menyadari gzip -1(sama seperti gzip --fast) tetapi bertanya-tanya apakah ada metode yang lebih cepat.

Terima kasih.

Sunting: setelah beberapa tes, saya membandingkan gzip -1, lzop -1dan pigz -1dengan satu sama lain dan sampai pada hasil berikut:

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

Edit 2 :

Ini agak tidak berhubungan dengan pertanyaan awal saya, namun menggunakan time dd if=/dev/VPS/snap | lzop -1 | ssh backup-server "dd of=/home/backupvps/snap.lzop"(ukuran blok diubah menjadi 16M) waktunya dikurangi menjadi real 18m22.442s!


1
Hati-hati: agak tidak adil untuk digunakan timedengan cara seperti itu. Throughput dari dd yang digunakan pigzlebih rendah dari dua lainnya.
Henk

@Devator: dengan melihat timing, orang mungkin menyimpulkan bahwa sekarang mendorong byte melalui ssh tunnel terenkripsi adalah hambatan. apakah Anda mencoba menggunakan ssh dengan bendera "-c" (kompresi) dan membiarkan pra-kompresor keluar dari persamaan? Anda juga dapat beralih ke algoritma enkripsi yang lebih cepat. selain itu: benchmark ulang tanpa ssh-tunnel (mis., menggunakan / dev / null sebagai output sink)
akira

Sebagai sidenote, dapatkah Anda menggunakan file yang jarang ? Maka nol tidak akan mengambil ruang pada disk. Kompresi Anda juga akan lebih cepat karena nol akan diinterpolasi oleh driver sistem file (dan tidak harus dibaca dari disk.)
Li-aung Yip

@ Li-aungYip Saya rasa tidak, karena "file" adalah volume LVM.
Devator

Ah, begitu. Lanjutkan!
Li-aung Yip

Jawaban:


14

Jika Anda tidak keberatan menjauh dari DEFLATE, lzopadalah implementasi LZO yang mendukung kecepatan daripada rasio kompresi.


1
atau .. snappy: code.google.com/p/snappy
akira

Terima kasih, saya menemukan lzopyang tercepat dalam skenario saya. Ini lebih cepat daripada pigzentah bagaimana (mungkin karena lot dari 0).
Devator

23

Meskipun saya pribadi belum menggunakannya, saya pikir menggunakan paralel gzip dapat mempercepat beberapa hal:

pigz, yang merupakan singkatan dari implementasi paralel dari gzip, adalah pengganti fungsional penuh untuk gzip yang mengeksploitasi banyak prosesor dan banyak core ke gagang saat mengompresi data.


1
Saya menggunakannya secara rutin, dan sangat merekomendasikan pigz jika banyak core tersedia. Selain mengubah tingkat kompresi, ini adalah cara yang paling mudah diakses dan langsung untuk mempercepat kompresi.
jgrundstad

3
Situs ini terlihat agak aneh. Tapi jangan tertipu oleh itu, pigz ditulis oleh salah satu pengembang gzip dan zlib, Mark Adler.
so_mv

Sepertinya proyek ini ditinggalkan pada saat ini.
AlexLordThorsen

Saya lebih suka menganggapnya sebagai "stabil". Itu tidak sering diperbarui, tetapi itu memperbarui.
Alan De Smet

7

Anda dapat mencoba Parallel Gzip (Pascal ditautkan dalam), atau BZIP Paralel.
Secara teori, BZIP jauh lebih baik untuk teks, jadi Anda mungkin ingin mencoba pbzip .


2

Disk Anda terbatas pada 30MB / s

Semua kompresor bekerja dengan cukup baik. Anda bahkan dapat mengurangi transfer jaringan menggunakan bzip2 yang sedikit lebih lambat tetapi ada di mana-mana.

$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

Sudahkah Anda mempertimbangkan rsync? Itu checksumming dan kemudian gzipping perbedaannya saja.


1
Disk saya tidak terbatas pada 30 MB / s. Saya baru saja menjalankan tes Anda: pigz -1: 1073741824 bytes (1.1 GB) copied, 8.6779 seconds, 124 MB/sdan gzip -1: 1073741824 bytes (1.1 GB) copied, 11.6724 seconds, 92.0 MB/s. Saya sudah memikirkan rsync tetapi itu akan memeriksa file berbeda dan mungkin tidak akan membantu, karena sebagian besar waktu banyak yang berubah.
Devator

Jika Anda mentransfer nol, lihat betapa mengesankan tampilan bzip2 encoding sebagai perbandingan. Hanya di sisi mana Anda mengukur kecepatan .... 4Mbit / s dari pigz mungkin terlalu banyak untuk jalur DSL umum ... Itu tumbuh lebih buruk jika disk Anda secepat itu.
Zab

2

Re: lzop itu lebih lambat di konfigurasi std ... Tweaking dapat separuh waktu. Tetapi ada pengganti yang lebih cepat yang disebut blosc:

https://github.com/FrancescAlted/blosc

Hmm ... Waktu yang diperlukan untuk mengirim ini dan mendapatkan balasan mungkin setidaknya dua kali lipat dari penghematan waktu yang akan Anda dapatkan ... Sekarang permisi sementara saya mengkompilasi ulang kernel saya untuk mencukur .1s dari waktu boot 2s saya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.