उबंटू में कौन से संपीड़न उपकरण उपलब्ध हैं जो मल्टी-कोर सीपीयू से लाभ उठा सकते हैं।
उबंटू में कौन से संपीड़न उपकरण उपलब्ध हैं जो मल्टी-कोर सीपीयू से लाभ उठा सकते हैं।
जवाबों:
दो मुख्य उपकरण हैं। lbzip2
और pbzip2
। वे अनिवार्य रूप से bzip2 कम्प्रेसर के विभिन्न कार्यान्वयन हैं। मैंने उनकी तुलना की है (आउटपुट एक टिड्ड अप संस्करण है लेकिन आपको कमांड चलाने में सक्षम होना चाहिए)
cd /dev/shm # we do all of this in RAM!
dd if=/dev/urandom of=bigfile bs=1024 count=102400
$ lbzip2 -zk bigfile
Time: 0m3.596s
Size: 105335428
$ pbzip2 -zk bigfile
Time: 0m5.738s6
Size: 10532460
lbzip2
यादृच्छिक डेटा पर विजेता प्रतीत होता है। यह थोड़ा कम संकुचित लेकिन बहुत तेज है। YMMV।
/dev/urandom
यादृच्छिक डेटा बेंचमार्किंग संपीड़न उपकरणों के लिए इनपुट का एक बढ़िया विकल्प नहीं है, क्योंकि परिभाषा के अनुसार, अयोग्य है। यह आंशिक रूप से बताता है कि क्यों दोनों मामलों में आउटपुट फ़ाइल इनपुट से ~ 450MiB बड़ी है।
00000000000000000000000000000000
। यह कैसे यादृच्छिक काम करता है;) आप जिस बारे में बात कर रहे हैं वह व्यावहारिक औसत है। यह संभव नहीं है कि आप सिर्फ शून्य की 100MB फ़ाइल उत्पन्न करेंगे। और मैं जो कह रहा हूं उसकी भावना से सहमत हूं, मैं सिर्फ "परिभाषा से" सहमत नहीं हूं क्योंकि यह परिभाषा नहीं है (क्योंकि यह गलत है)।
wget http://mattmahoney.net/dc/enwik8.zip
विकिपीडिया से 96MB (21MB संपीड़ित) पाठ को हथियाने के लिए एक अच्छी शुरुआत बस इसे कुछ पाठ को पाइप करने के लिए हो सकती है । बेंचमार्क के अधिक व्यापक सूट के लिए, यहां देखें ।
खैर, कीवर्ड समानांतर था । सभी संपीड़न उपकरणों की तलाश करने के बाद जो समानांतर थे, मुझे निम्नलिखित मिला:
पीएक्सजेड - समानांतर एक्सजेड एक संपीड़न उपयोगिता है जो एक से अधिक कोर और प्रोसेसर पर एक इनपुट फ़ाइल के विभिन्न भागों के LZMA संपीड़न को एक साथ चलाने का लाभ उठाती है। इसका प्राथमिक लक्ष्य संपीड़न अनुपात पर न्यूनतम संभव प्रभाव के साथ संपीड़न समय को गति देने के लिए सभी संसाधनों का उपयोग करना है।
sudo apt-get install pxz
PLZIP - Lzip LZMA एल्गोरिथ्म पर आधारित एक दोषरहित डेटा कंप्रेसर है, जिसमें बहुत ही सुरक्षित अखंडता की जाँच की जाती है और एक उपयोगकर्ता इंटरफ़ेस जो कि gzip या bzip2 के समान है। Lzip लगभग gzip के रूप में तेजी से कम हो जाता है और bzip2 से बेहतर संपीड़ित होता है, जो इसे सॉफ्टवेयर वितरण और डेटा संग्रह के लिए अच्छी तरह से अनुकूल बनाता है।
प्लज़िप लज़ीज़ फ़ाइल प्रारूप का उपयोग करके लाज़िप का एक व्यापक रूप से समानांतर (बहु-थ्रेडेड) संस्करण है; plzip द्वारा निर्मित फाइलें पूरी तरह से lzip के साथ संगत हैं।
मल्टिप्रेसर मशीन पर बड़ी फ़ाइलों के तेजी से संपीड़न / अपघटन के लिए प्लज़िप का इरादा है, जो बड़ी सॉफ़्टवेयर फ़ाइलों और बड़े पैमाने पर डेटा संग्रह के वितरण के लिए विशेष रूप से अनुकूल है। बड़ी फ़ाइलों पर, plzip सैकड़ों प्रोसेसर का उपयोग कर सकता है।
sudo apt-get install plzip
PIGZ - पिगज़, जो GZip के समानांतर कार्यान्वयन के लिए खड़ा है, gzip के लिए एक पूरी तरह कार्यात्मक प्रतिस्थापन है जो डेटा को संपीड़ित करते समय कई प्रोसेसर और कई कोर का लाभ उठाता है।
sudo apt-get install pigz
PBZIP2 - pbzip2 bzip2 ब्लॉक-सॉर्टिंग फ़ाइल कंप्रेसर का समानांतर कार्यान्वयन है जो एसएमपी मशीनों पर निकट-रैखिक स्पीडअप का उपयोग करता है। इस संस्करण का आउटपुट पूरी तरह से bzip2 v1.0.2 के साथ संगत है (यानी: pbzip2 के साथ संकुचित कुछ भी bzip2 के साथ विघटित हो सकता है)।
sudo apt-get install pbzip2
LRZIP - एक मल्टीथ्रेडेड संपीड़न प्रोग्राम जो बड़ी फ़ाइलों के साथ उपयोग किए जाने पर बहुत अधिक संपीड़न अनुपात और गति प्राप्त कर सकता है। यह अधिकतम संपीड़न के लिए zpaq और lzma के संयुक्त संपीड़न एल्गोरिदम का उपयोग करता है, अधिकतम गति के लिए lzo, और rzip की लंबी अवधि के अतिरेक में कमी। यह रैम आकार में वृद्धि के साथ बड़े पैमाने पर बनाया गया है, जिससे संपीड़न में और सुधार होता है। आकार या गति अनुकूलन दोनों में से एक विकल्प या तो बेहतर संपीड़न के लिए अनुमति देता है, यहां तक कि lzma प्रदान भी कर सकता है, या gzip की तुलना में बेहतर गति, लेकिन bzip2 आकार संपीड़न स्तरों के साथ।
sudo apt-get install lrzip
एक छोटी सी संपीड़न बेंचमार्क (बनाई गई परीक्षण ओली का उपयोग करके):
मूल फ़ाइल आकार - 100 एमबी
PBZIP2 - 101 एमबी (1% बड़ा)
PXZ - 101 एमबी (1% बड़ा)
PLZIP - 102 एमबी (1% बड़ा)
LRZIP - 101 एमबी (1% बड़ा)
PIGZ - 101 एमबी (1% बड़ा) )
एक छोटी संपीड़न बेंचमार्क (पाठ फ़ाइल का उपयोग करके):
मूल फ़ाइल आकार - 70 KB पाठ फ़ाइल
PBZIP2 - 16.1 KB (23%)
PXZ - 15.4 KB (22%)
PLZIP - 15.5 KB (22.1%)
LRZIP - 15.3 KB (21.8%)
PIGZ - 17.4 KB (24.8%)
lrzip
असम्पीडित का उपयोग कर असम्पीडित किया जा सकता है pbzip2
।
उपरोक्त अच्छे सारांश के अलावा (धन्यवाद लुइस), इन दिनों लोग PIXZ पर भी विचार करना चाह सकते हैं, जो इसके अनुसार README है (स्रोत: https://github.com/vasi/pixz - मैंने स्वयं दावों का सत्यापन नहीं किया है ) पीएक्सजेड से अधिक कुछ फायदे हैं।
[Compared to PIXZ, PXZ has these advantages and disadvantages:]
* Simpler code
* Uses OpenMP instead of pthreads
* Uses streams instead of blocks, not indexable
* Uses temp files and doesn't combine them until the whole file is compressed, high disk/memory usage
दूसरे शब्दों में, PIXZ माना जाता है कि अधिक मेमोरी और डिस्क कुशल है, और इसमें एक वैकल्पिक अनुक्रमण सुविधा है जो संपीड़ित टार फ़ाइलों के व्यक्तिगत घटकों के अपघटन को गति देती है।
pixz
अभिलेखागार मानक xz
प्रारूप के साथ संगत नहीं हैं , जिस तरह से pxz
होगा।
pixz
decompress कर सकते हैं xz
और अभिलेखागार decompress xz
कर सकते हैं pixz
। हालाँकि, कमांड लाइन विकल्प xz
और pixz
अलग - अलग हैं।
pixz
।
XZ Utils v5.2.0 के बाद से बहु-थ्रेडेड संपीड़न का समर्थन करता है, यह मूल रूप से गलती से बहु-थ्रेडेड विसंपीड़न के रूप में प्रलेखित था।
उदाहरण के लिए: tar -cf - source | xz --threads=0 > destination.tar.xz
export XZ_DEFAULTS="-T 0"
और फिर अपने सामान्य टार कॉल का उपयोग कर सकते हैं tar cJf target.tar.xz source
।
lzop एक व्यवहार्य विकल्प भी हो सकता है, हालांकि यह सिंगल-थ्रेडेड है।
यह बहुत तेजी से लेम्पेल-ज़िव-ओबरहूमर संपीड़न एल्गोरिथ्म का उपयोग करता है जो मेरे अवलोकन में गज़िप की तुलना में 5-6 गुना अधिक तेज है।
नोट: हालांकि यह अभी तक बहु-थ्रेडेड नहीं है, यह संभवतः 1-4 कोर सिस्टम पर पिग्मेंट को आउटपरफॉर्म करेगा। इसलिए मैंने इसे पोस्ट करने का फैसला किया, भले ही यह सीधे आपके सवाल का जवाब न दे। यह कोशिश करो, यह केवल एक सीपीयू का उपयोग करते हुए और थोड़ा खराब होने पर आपकी सीपीयू अड़चन की समस्या को हल कर सकता है। मैंने पाया कि अक्सर पिगज़ की तुलना में यह एक बेहतर समाधान है।
की LZMA2 कंप्रेसर p7zip अपने सिस्टम पर दोनों कोर का उपयोग करता है।
यह वास्तव में एक उत्तर नहीं है, लेकिन मुझे लगता है कि यह मेरे बेंचमार्क को वास्तविक जीवन परिदृश्य में वास्तविक एचडब्ल्यू पर gzip
और pigz
वास्तविक एचआर पर तुलना करने के लिए पर्याप्त प्रासंगिक है। जैसा कि pigz
मैं अब से उपयोग करने के लिए चुना है कि व्यक्तिगत रूप से विकसित विकास है।
मेटाडाटा:
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
(4c / 8t) + Nvme SSDXubuntu 17.10 (artful)
gzip
संस्करण: 1.6
pigz
संस्करण: 2.4
gzip
शीघ्र
time gzip -1kN ./db_dump.sql
real 1m22,271s
user 1m17,738s
sys 0m3,330s
gzip
श्रेष्ठ
time gzip -9kN ./db_dump.sql
real 10m6,709s
user 10m2,710s
sys 0m3,828s
pigz
शीघ्र
time pigz -1kMN ./db_dump.sql
real 0m26,610s
user 1m55,389s
sys 0m6,175s
pigz
सबसे अच्छा (नहीं zopfli
)
time pigz -9kMN ./db_dump.sql
real 1m54,383s
user 14m30,435s
sys 0m5,562s
pigz
+ zopfli
एल्गोरिथ्म
time pigz -11kMN ./db_dump.sql
real 171m33,501s
user 1321m36,144s
sys 0m29,780s
एक तख़्तापलट के रूप में मैं zopfli
एल्गोरिथ्म की सिफारिश नहीं करूंगा क्योंकि संपीड़न ने डिस्क स्पेस के एक-नहीं-महत्वपूर्ण मात्रा के लिए जबरदस्त समय लिया।
परिणाम आकार फ़ाइल:
Zstandard v1.2.0 v1 के बाद से बहु-थ्रेडिंग का समर्थन करता है । यह gzip को बदलने के लिए एक बहुत तेज़ कंप्रेसर और डीकंप्रेसर है और यह कुशल के रूप में संपीड़ित भी कर सकता है - यदि बेहतर नहीं है - अपने उच्चतम स्तरों पर LZMA2 / XZ के रूप में।
आपको इन लाभों को प्राप्त करने के लिए कलात्मक या नए रिलीज़ का उपयोग करना होगा या स्रोत से नवीनतम संस्करण संकलित करना होगा। सौभाग्य से यह बहुत अधिक निर्भरता में नहीं खींचता है।