मुझे यह पता चला:
कारण यह है कि 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वही कर सकते हैं?