गज़िप संपीड़न को गति दें


15

क्या gzipप्रक्रिया को गति देना संभव है ?

मैं उपयोग कर रहा हूँ

mysqldump "$database_name" | gzip > $BACKUP_DIR/$database_name.sql.gz

एक डेटाबेस में एक निर्देशिका में बैकअप के लिए $BACKUP_DIR,।

मैनपेज कहता है:

- # --fast --best
निर्दिष्ट अंक # का उपयोग करके संपीड़न की गति को नियंत्रित करता है, जहां -1 या --fast indi‐ सबसे तेजी से संपीड़न विधि (कम संपीड़न) और -9 या --best सबसे कम संपीड़न विधि को इंगित करता है ( सबसे अच्छा संपीड़न)। डिफ़ॉल्ट संपीड़न स्तर -6 है (जो कि गति की कीमत पर उच्च संपीड़न के पक्षपाती है)।

  • इसका उपयोग कितना प्रभावी होगा --fast?
  • क्या यह आधुनिक कंप्यूटर पर CPU उपयोग को प्रभावी ढंग से कम कर रहा है?

मेरे परीक्षा परिणाम

मैंने किसी त्वरण पर ध्यान नहीं दिया:

  • 7 मिनट, 47 सेकंड (डिफ़ॉल्ट अनुपात के साथ -6)
  • 8 मिनट, 36 सेकंड (अनुपात --fast(= 9) के साथ)

तो ऐसा लगता है कि तेजी से संपीड़न का उपयोग करने में अधिक समय लगता है?

केवल उच्च संपीड़न वास्तव में इसे धीमा कर देता है:

  • 11 मिनट, 57 सेकंड (अनुपात --best(= 1) के साथ)

आइडिया मिलने के बाद मैंने उसका lzopपरीक्षण किया और यह वास्तव में तेज़ है:

  • 6 मिनट, 14 सेकंड के साथ lzop -1 -f -o $BACKUP_DIR/$database_name.sql.lzo


क्या आप CPU समय या समग्र (घड़ी) समय के बारे में चिंतित हैं? - एस्बेस्टस 9 है, --फास्ट 1. है
स्टीफन चेजालस

3
यदि gzip -1बहुत तेज़ नहीं है, तो उपयोग करेंlzop
स्टीफन चेज़लस

1
वहाँ भी है lz4जो इस बेंचमार्क को और भी तेज़ी से देख रहा है । लेकिन ऐसा लगता है कि lzop और lz4 को बहुत अधिक मेमोरी की आवश्यकता है। क्या यह मेरे 1GB RAM सिंगल-कोर पर एक समस्या होगी जो lz4 gzip की तुलना में कम्प्रेशन पर 30 गुना ज्यादा मेमोरी का उपयोग करता है जब मैं कुछ बड़े डेटाबेस को कंप्रेस करता हूं?
rubo77

lz4 को उतनी मेमोरी की जरूरत नहीं है। यदि आप lz4c उपयोगिता का उपयोग कर रहे हैं, तो लगभग सभी मेमोरी I / O बफर के लिए आवंटित की जाती है। आप छोटे बफ़र्स (64KB बफ़र्स के लिए विकल्प -B4) का उपयोग करके इसे कम कर सकते हैं। चूंकि छोटे बफ़र्स का मतलब बदतर संपीड़न भी है, इसलिए यह जंजीर-ब्लॉक संपीड़न (विकल्प-बीडी) को सक्षम करने के लिए उपयोगी है। देखें: fastcompression.blogspot.fr/2013/08/…
सियान

जवाबों:


19

यदि आपके पास मल्टी-कोर मशीन का उपयोग करना है पिगज़ का है, तो पारंपरिक गज़िप की तुलना में बहुत तेज़ है।

पिगज़, जो कि गज़िप के समानांतर कार्यान्वयन के लिए खड़ा है, गज़िप के लिए एक पूरी तरह से कार्यात्मक प्रतिस्थापन है जो डेटा को संकुचित करते समय कई प्रोसेसर और कई कोर को झुकाव के लिए शोषण करता है। पिग मार्क मार्क एडलर द्वारा लिखा गया था, और ज़ालिब और फैथ्रेड लाइब्रेरी का उपयोग करता है।

पिगज़ सीए को गज़िप के बदले ड्रॉप-इन रिप्लेसमेंट के रूप में इस्तेमाल किया जाता है। केवल संपीड़न से नोट समानांतर किया जा सकता है, विघटन नहीं।

पिग का उपयोग करके कमांड लाइन बन जाती है

mysqldump "$database_name" | pigz > $BACKUP_DIR/$database_name.sql.gz

क्या यह एकल-कोर पर प्रक्रिया को गति देता है?
rubo77

@ rubo77 - यह कोई प्रशंसक कई कोर में संपीड़न नहीं करता है।
स्लम

pigzCPU उपयोग को बढ़ाता है लेकिन मल्टी-प्रोसेसर पर लगने वाले घड़ी के समय को कम करता है
स्टीफन चेज़लस

वास्तव में, और यह अक्सर वांछित है। और आमतौर पर (हार्डवेयर पर निर्भर करता है) gzip कम्प्रेशन CPU बाउंड (सिंगल-थ्रेड परफॉर्मेंस) है और पिगज़ कम्प्रेशन अक्सर IO बाउंड होता है।
मार्को

5

से man gzip:

   -# --fast --best
          Regulate  the  speed  of compression using the
          specified digit #, where -1  or  --fast  indi‐
          cates  the  fastest  compression  method (less
          compression) and -9 or  --best  indicates  the
          slowest compression method (best compression).
          The default compression level is -6 (that  is,
          biased  towards high compression at expense of
          speed).

3

यदि आपको डेटाबेस लॉकिंग मुद्दों के कारण इसे तेज़ करने की आवश्यकता है, और आपके पास डेटा को अस्थायी रूप से असम्पीडित रखने के लिए एक तेज़ / बड़ी डिस्क है, तो आप इसके बजाय इस पद्धति का उपयोग करने पर विचार कर सकते हैं:

mysqldump "$database_name" > "$BACKUP_DIR"/"$database_name".sql
nice gzip "$BACKUP_DIR"/"$database_name".sql &

यानी बैकअप को पहले स्टोर करें (जो कि इसे तेज करने से ज्यादा तेज हो अगर डिस्क तेज है और सीपीयू धीमा है) और फिर बैकग्राउंड में जिपिंग आ जाती है।

यह आपको एक बेहतर संपीड़न एल्गोरिदम का उपयोग करने की अनुमति भी दे सकता है, क्योंकि यह अब (सीधे) मायने नहीं रखता है कि संपीड़न कितना समय लेता है।

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