मुझे यह पता चला:
कारण यह है कि gzip
(इन दिनों सीपीयू की गति बनाम एचडी की गति की तलाश में) बेहद कम बफर आकारों पर काम कर रहा है ।
यह इनपुट फ़ाइल से कुछ KB पढ़ता है, इसे संपीड़ित करता है, और इसे आउटपुट फ़ाइल पर फ़्लश करता है। इस तथ्य को देखते हुए कि इसके लिए हार्ड ड्राइव की आवश्यकता है, प्रति सेकंड कुछ ही ऑपरेशन किए जा सकते हैं।
मेरे प्रदर्शन का पैमाना नहीं था क्योंकि पहले से ही gzip
पागलों की तरह चाह रहा था।
मैंने यूनिक्स buffer
उपयोगिता का उपयोग करके इसके चारों ओर काम किया :
buffer -s 100000 -m 10000000 -p 100 < file1.json | gzip > file1.json.gz
गज़िप में भेजने से पहले बहुत सारे इनपुट को बफ़र करके, छोटे सीक की संख्या को नाटकीय रूप से कम किया जा सकता है। विकल्प:
-s
और -m
बफ़र का आकार निर्दिष्ट करने के लिए हैं (मेरा मानना है कि यह KB में है, लेकिन निश्चित नहीं है)
-p 100
सुनिश्चित करें कि बफर 100% भर जाने के बाद डेटा केवल gzip को पास किया जाता है
समानांतर में इनमें से चार को चलाने पर, मुझे उम्मीद के मुताबिक 4 * 25 एमबी / एस थ्रूपुट मिल सकता है।
मुझे अभी भी आश्चर्य है कि क्यों gzip बफर आकार को बढ़ाने की अनुमति नहीं देता है - इस तरह, यह एक बेकार डिस्क पर चलाने पर बहुत बेकार है।
संपादित करें : मैंने कुछ और संपीड़न कार्यक्रमों के व्यवहार की कोशिश की:
bzip2
केवल 2 एमबी / एस को इसके मजबूत / अधिक सीपीयू गहन संपीड़न के कारण संसाधित करता है
lzop
लगता है कि बड़े बफ़र्स की अनुमति है: 70 एमबी / एस प्रति कोर, और 2 कोर अधिक मांग के बिना मेरे एचडी को अधिकतम कर सकते हैं
dd
वही कर सकते हैं?