सबसे तेज़ GZIP उपयोगिता


18

मैं सबसे तेज़ gzip(या ज़िप) उपयोगिता की तलाश में हूं । मेरे पास LVM वॉल्यूम है जो 95% रिक्त के बाहर मौजूद है 0, इसलिए इसे संपीड़ित करना बहुत आसान है। मैं सबसे तेज़ समाधान ढूंढ रहा हूं, और वास्तव में सिवाय संपीड़न की परवाह नहीं करता 0

मैं gzip -1(के रूप में ही gzip --fast) के बारे में पता कर रहा हूँ, लेकिन अगर वहाँ किसी भी तेजी से विधि है सोच रहा था।

धन्यवाद।

संपादित करें: कुछ परीक्षणों के बाद, मैंने तुलना की gzip -1, lzop -1और प्रत्येक pigz -1अभिभावक के साथ और निम्नलिखित परिणामों पर आया:

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

2 संपादित करें :

यह मेरे प्रारंभिक प्रश्न से कुछ हद तक असंबंधित है, हालांकि time dd if=/dev/VPS/snap | lzop -1 | ssh backup-server "dd of=/home/backupvps/snap.lzop"(ब्लॉक का आकार बदलकर 16M हो गया) समय कम हो गया है real 18m22.442s!


1
सावधान रहें: timeइस तरह से उपयोग करना कुछ हद तक अनुचित है। Dd का थ्रूपुट pigzअन्य दो की तुलना में कम है।
हेंक

@Devator: समय को देखकर कोई भी यह निष्कर्ष निकाल सकता है कि अभी एन्क्रिप्टेड ssh सुरंग के माध्यम से बाइट को धक्का देना अड़चन है। क्या आपने "-c" (संपीड़न) ध्वज के साथ ssh का उपयोग करने की कोशिश की और प्री-कंप्रेसर को समीकरण से बाहर जाने दिया? आप एक तेज़ एन्क्रिप्शन एल्गोरिथ्म पर भी जा सकते हैं। उससे अलग: ssh- सुरंग के बिना फिर से बेंचमार्क (जैसे, आउटपुट सिंक के रूप में / dev / null का उपयोग करके)
akira

एक विचार के रूप में, क्या आप एक विरल फ़ाइल का उपयोग कर सकते हैं ? फिर शून्य डिस्क पर कोई स्थान नहीं लेगा। आपका कंप्रेशन भी तेज़ होगा क्योंकि जीरो फाइल सिस्टम ड्राइवर द्वारा इंटरपोल किया जाएगा (और डिस्क से पढ़ना नहीं होगा।)
Li-aung Yip

@ Li-aungYip मुझे ऐसा नहीं लगता, क्योंकि "फाइलें" LVM वॉल्यूम हैं।
डेवेटर

ओह समझा। लगे रहो!
ली-आंग येप

जवाबों:


14

यदि आप DEFLATE से दूर जाने का मन नहीं करते हैं, lzopतो LZO का कार्यान्वयन है जो संपीड़न अनुपात पर गति का पक्षधर है।


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

धन्यवाद, मैंने lzopअपने परिदृश्य में सबसे तेज़ पाया है। यह pigzकिसी भी तरह से तेज है (शायद बहुत से 0 के कारण)।
डेवेटर

23

हालाँकि मैंने अभी तक व्यक्तिगत रूप से इसका उपयोग नहीं किया है, लेकिन मुझे लगता है कि समानांतर gzip का उपयोग करने से चीज़ें थोड़ी बढ़ सकती हैं:

पिगज़, जो गज़िप के समानांतर कार्यान्वयन के लिए खड़ा है, गज़िप के लिए एक पूरी तरह से कार्यात्मक प्रतिस्थापन है जो डेटा को संपीड़ित करते समय कई प्रोसेसर और मल्टीपल कोर को hilt में शोषण करता है।


1
मैं इसे नियमित रूप से उपयोग करता हूं, और अगर कई कोर उपलब्ध हैं, तो पूरी तरह से पिग की सिफारिश करें। संपीड़न स्तर को बदलने के अलावा, यह संपीड़न को तेज करने का सबसे सुलभ और सीधा साधन है।
jgrundstad

3
साइट थोड़ी अजीब लगती है। लेकिन उस से मूर्ख मत बनो, पिगज़ को गज़िप और ज़ालिब के डेवलपर्स में से एक, मार्क एडलर ने लिखा है।
so_mv

ऐसा लगता है कि इस बिंदु पर परियोजना को छोड़ दिया गया है।
एलेक्सलॉर्ड टॉर्सन

मैं इसे "स्थिर" के रूप में सोचना पसंद करता हूं। यह अक्सर अद्यतन नहीं करता है, लेकिन यह अद्यतन करता है।
एलन डी स्मेट

7

आप Parallel Gzip (पास्कल इसे लिंक्ड इन), या Parallel BZIP आज़मा सकते हैं।
सिद्धांत रूप में, BZIP पाठ के लिए बहुत बेहतर है, इसलिए आप pbzip आज़माना चाहते हैं ।


2

आपकी डिस्क 30MB / s पर सीमित है

सभी कंप्रेशर्स काफी अच्छा करते हैं। तुम भी मामूली धीमी लेकिन सर्वव्यापी bzip2 का उपयोग कर नेटवर्क हस्तांतरण को कम कर सकते हैं।

$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 पर विचार किया है? यह चेकसमिंग करता है और फिर केवल अंतर को पकड़ता है।


1
मेरी डिस्क 30 एमबी / एस पर सीमित नहीं है। मैंने अभी आपका परीक्षण चलाया है: pigz -1: 1073741824 bytes (1.1 GB) copied, 8.6779 seconds, 124 MB/sऔर gzip -1: 1073741824 bytes (1.1 GB) copied, 11.6724 seconds, 92.0 MB/s। मैंने rsync के बारे में सोचा है, लेकिन यह फ़ाइल को अलग-अलग जाँच करेगा और यह शायद मदद नहीं करेगा, क्योंकि ज्यादातर समय बहुत बदल गया है।
डेवेटर

यदि आप ज़ीरो को स्थानांतरित करने में लगे हैं तो तुलना में bzip2 एन्कोडिंग कितना प्रभावशाली दिखता है। बस जिस तरफ आप गति को मापते हैं .... एक सामान्य डीएसएल लाइन के लिए 4Mbit / s पिगज़ बहुत अधिक हो सकता है ... यदि आपकी डिस्क इतनी तेज़ है तो यह और भी खराब हो जाती है।
ज़ैब

2

पुन :: lzop यह अपने std विन्यास में धीमी है ... Tweaking आधा समय हो सकता है। लेकिन एक और भी तेजी से प्रतिस्थापन कहा जाता है:

https://github.com/FrancescAlted/blosc

हम्म ... इसे पोस्ट करने और इसे प्राप्त करने में लगने वाला समय शायद कम से कम दोगुना हो जाए, लेकिन आपको जो भी मिलेगा, उससे कम से कम दोगुना होगा ... अब मुझे माफ करना, जबकि मैं अपने कर्नेल को दूसरे से शेव करने के लिए पुनः प्रयोग करता हूं। अपने 2 एस बूट समय से ।1s।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.