सीपीयू-अनुकूली संपीड़न


10

मान लें कि मुझे एक कंप्यूटर से दूसरे कंप्यूटर पर, बहुत तेज़ नेटवर्क पर कुछ डेटा भेजने की आवश्यकता है ... उदाहरण के लिए मानक 100Mbit कनेक्शन (~ 10MB / s)। मेरी डिस्क ड्राइव मानक HDD हैं, इसलिए उनकी गति कहीं 30MB / s और 100MB / s के बीच है। इसलिए मुझे लगता है कि मक्खी पर डेटा को संपीड़ित करने से मदद मिल सकती है।

लेकिन ... मैं सीपीयू द्वारा सीमित नहीं होना चाहता। यदि मैं एक एल्गोरिथ्म चुनता हूं जो सीपीयू पर गहन है, तो स्थानांतरण वास्तव में बिना संपीड़न के धीमा हो जाएगा।

यह GZIP और BZIP2 जैसे कंप्रेशर्स के साथ मुश्किल है क्योंकि आप आमतौर पर पूरे स्थानांतरण के लिए एक बार संपीड़न ताकत निर्धारित करते हैं, और मेरे डेटा स्ट्रीम कभी-कभी आसान होते हैं, कभी-कभी संपीड़ित करना मुश्किल होता है - यह प्रक्रिया को उप-रूप बनाता है क्योंकि कभी-कभी मैं पूर्ण सीपीयू का उपयोग नहीं करता हूं और कभी-कभी बैंडविड्थ को हटा दिया जाता है।

क्या कोई संपीड़न कार्यक्रम है जो वर्तमान सीपीयू / बैंडविड्थ के अनुकूल होगा और मीठे स्थान को हिट करेगा ताकि हस्तांतरण इष्टतम होगा? आदर्श रूप से लिनक्स के लिए, लेकिन मैं अभी भी सभी समाधानों के बारे में उत्सुक हूं। मुझे GZIP / BZIP2 decompressors के साथ संगत कुछ देखना अच्छा लगेगा, लेकिन यह आवश्यक नहीं है।

इसलिए मैं कुल हस्तांतरण समय का अनुकूलन करना चाहता हूं, केवल बाइट्स की राशि भेजने के लिए नहीं।

इसके अलावा, मैं वास्तविक समय की जरूरत नहीं है ... वास्तविक समय संपीड़न पर्याप्त है। गंतव्य होस्ट डेटा को अपने खाली समय में बाद में संसाधित कर सकता है। मुझे पता है कि यह बहुत नहीं बदलता है (संपीड़न आमतौर पर बहुत अधिक सीपीयू-गहन विघटन की तुलना में होता है), लेकिन अगर कोई समाधान है जो इस तथ्य का उपयोग कर सकता है, तो सभी बेहतर।

हर बार मैं अलग-अलग डेटा ट्रांसफर कर रहा हूं, और मैं वास्तव में इन वन-टाइम ट्रांसफर को जल्द से जल्द करना चाहता हूं। तो मैं मजबूत संपीड़न के कारण तेजी से कई स्थानान्तरण प्राप्त करने से लाभ नहीं होगा।

धन्यवाद,


1
+1 दिलचस्प और संभावित उपयोगी विचार। यदि आपको कभी ऐसा करने के कुछ अच्छे तरीके मिलें, तो मैं इसके बारे में सुनना चाहूंगा।
डेविड कैरी

जवाबों:


3

यह शोध का एक वर्तमान विषय है - मुख्य रूप से सेंसर नेटवर्क के क्षेत्र में जहां लक्ष्य अधिकतम प्रवाह के बजाय बिजली के उपयोग को कम करना है। अनुकूली संपीड़न का सिद्धांत हालांकि समान है।

यहां यूएससी के एक प्रोफेसर का हालिया पेपर है ।

हो सकता है कि आप उसके एल्गोरिथ्म को लागू करने पर जा सकते हैं? मुझे यकीन है कि एक अच्छे कार्यान्वयन में रुचि रखने वाले कई लोग होंगे।


मुझे अच्छा लगेगा, अगर मैं कर सकता ... सामान्य मानव समय की कमी यहाँ लागू होती है। फिर भी मैं इसका परीक्षण करने के लिए पहले हो सकता हूं ;-) कागजात के लिंक के लिए धन्यवाद, मैं अन्य लोगों को खोजने की कोशिश कर सकता हूं जो रुचि रखते हैं।
लियोरी

2

हम, यह प्रश्न अब एक वर्ष से अधिक पुराना है, इसलिए इस पर किसी का ध्यान नहीं जा सकता है:

वैसे भी, Google ने हाल ही में Snappy प्रकाशित किया है जो हो सकता है कि वास्तव में आप क्या देख रहे हैं, अर्थात्:

[...] यह किसी भी अन्य संपीड़न पुस्तकालय के साथ अधिकतम संपीड़न, या संगतता के लिए लक्ष्य नहीं है; इसके बजाय, यह बहुत उच्च गति और उचित संपीड़न का लक्ष्य रखता है। उदाहरण के लिए, zlib के सबसे तेज़ मोड की तुलना में, Snappy अधिकांश इनपुट के लिए तेज़ी से परिमाण का एक क्रम है, लेकिन परिणामी संपीड़ित फ़ाइलें कहीं भी 20% से 100% तक बड़ी हैं [...]

यह C ++ में C के लिए उपलब्ध बाइंडिंग और अन्य भाषाओं की एक श्रृंखला के साथ लागू किया गया है।


ओह, नहीं, यह किसी का ध्यान नहीं जाएगा, कम से कम मेरे द्वारा ;-) और ऐसा लगता है कि यह उस अर्थ में अनुकूल नहीं है, जिसकी मैं तलाश करता हूं - यह सिर्फ तेज है।
लियोरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.