X11 इतना अक्षम क्यों है?


97

जब भी मैं X11 अग्रेषण के साथ बड़े GUI को दूरस्थ रूप से लॉन्च करता हूं, यहां तक ​​कि -सी स्विच सहित, अनुभव बहुत ही अप्रतिसादी होता है। मेरा सवाल यह है कि अवधारणा / प्रोटोकॉल स्तर पर इसका क्या कारण है?

अपने 25mbit कनेक्शन के साथ, मैं अपने कंप्यूटर पर HD वीडियो को बिना किसी समस्या के स्ट्रीम कर सकता हूं। दूसरी ओर, X11 अग्रेषण के साथ दूरस्थ रूप से लॉन्च किए गए GUIs की गैर-सक्रियता 100 मीबिट लैन पर भी होती है, जहां विलंबता शून्य के पास होनी चाहिए।

मैं समझता हूं कि वीडियो स्ट्रीमिंग के विपरीत, विलंबता सबसे अच्छी तरह से दोगुनी हो जाएगी (क्योंकि इनपुट को दूरस्थ मशीन में भेजने की आवश्यकता होती है और उसके बाद ही इसका जवाब मिल सकता है), लेकिन आंतरिक रूप से, अन्य कारक हैं जो विलंबता को भी बढ़ाते हैं आगे की?

दूसरी बात, बैंडविड्थ। यह इतना अधिक क्यों खाती है? जब चित्र और वीडियो प्रारूपों की बात आती है, तो आकार को कम करने के लिए कई विधियों का उपयोग किया जाता है।

उदाहरण के लिए .bmp बनाम। Png के मामले में, एक बड़ी काली वर्गाकार छवि .png प्रतिनिधित्व में कम रास्ता तय करेगी क्योंकि जानकारी हर एक पिक्सेल के लिए संग्रहीत नहीं होती है, लेकिन जहाँ तक मैं समझता हूँ, एक सीमा-ईश तरीके से।

वीडियो के मामले में, पूरे फ़्रेम के बजाय फ़्रेम के बीच अंतर भेजकर पूरी जानकारी को बचाया जा सकता है।

मुझे पता है कि यह बहुत सरल है, लेकिन X11 इन विधियों का उपयोग नहीं कर रहा है? क्या यह किसी स्तर पर बिटमैप-ईश या गैर-अंतर सिद्धांत पर व्यवहार करता है? और यदि नहीं, तो यह इतना बैंडविड्थ क्यों लेता है?


9
सामान्य ज्ञान: Xpra एक दिलचस्प दृष्टिकोण प्रदान करता है।
कामिल मैकियोरोस्की

12
BTW - "-सी" का उपयोग आपके कनेक्शन को धीमा कर देगा यदि आपका लिंक पर्याप्त तेज है क्योंकि संपीड़न में समय लगता है। "-C" 100Mb को लाभ दे सकता है, लेकिन संभवतः 1Gb को नुकसान पहुंचा सकता है, और निश्चित रूप से 10Gb को नुकसान पहुंचा सकता है। यह भी मामला है कि 'ssh' आपके थ्रूपुट को नुकसान पहुँचाएगा - जैसे कि तेज़ लिंक पर कोई एन्क्रिप्शन। यदि आपके पास कंप्यूटर या एक सुरक्षित आंतरिक-लिंकेज के बीच सीधा-संबंध है, तो टीसीपी: 6000 पर अपने एक्स कनेक्शन के साथ सीधे जाएं। आपको ध्यान देने योग्य गति में सुधार होगा।
अस्तारा

2
ऐसा लगता है कि आप SSH के माध्यम से आगे बढ़ रहे हैं, जिसमें सभी डेटा को एन्क्रिप्ट / डिक्रिप्ट करना है। यह ओवरहेड / विलंबता जोड़ने जा रहा है। तेज़ प्रोसेसर मदद कर सकता है, लेकिन इसमें एक निश्चित मात्रा में विलंब होगा, इससे कोई फर्क नहीं पड़ता कि आप क्या करते हैं। X बहुत "गपशप" है, इसलिए विलंबता में मामूली वृद्धि = प्रदर्शन में महत्वपूर्ण गिरावट। पिछले समय में, मैं X का उपयोग करने में सक्षम था, SSH के माध्यम से एक 28.8 मॉडेम से अधिक सुरंगों; यह lbxproxy (अब पदावनत) का उपयोग कर रहा था जिसने बहुत सारा डेटा संचित / संपीड़ित कर दिया और कनेक्शन की "चेटनेस" को कम कर दिया। -सी का उपयोग केवल अधिक विलंबता जोड़ सकता है।
मेवेर68

ssh -Y -c blowfishएन्क्रिप्ट करते समय ओवरहेड को कम करने के लिए कुछ का उपयोग करें । यदि आपके पास दोनों छोरों का पूरा नियंत्रण है, तो कनेक्शन पर पूर्ण हस्तांतरण की गति प्राप्त करने के लिए "कोई नहीं" एन्क्रिप्शन का उपयोग करना सिखाएं।
थोरबजोरन रावन एंडरसन

जवाबों:


116

X11 प्रोटोकॉल का अर्थ कभी भी रेखांकन (बिटमैप / बनावट के संदर्भ में) गहन संचालन से नहीं था। उस दिन वापस जब X11 को पहली बार डिज़ाइन किया गया था कंप्यूटर ग्राफिक्स आज की तुलना में बहुत सरल थे।

मूल रूप से X11 आपके कंप्यूटर पर स्क्रीन नहीं भेजता है, लेकिन यह डिस्प्ले-निर्देश भेजता है, इसलिए आपके स्थानीय कंप्यूटर पर एक्स-सर्वर आपके स्थानीय सिस्टम पर स्क्रीन को फिर से बना सकता है। और यह प्रदर्शन के प्रत्येक परिवर्तन / ताज़ा करने पर किया जाना चाहिए।
तो आपका कंप्यूटर निर्देशांक की एक धारा प्राप्त करता है जैसे "निर्देशांक x, y से (xx, yy) में इस रंग में रेखा खींचना, आयत W पिक्सेल चौड़ा, H पिक्सेल उच्च-बाएँ कोने पर (x, y), आदि के साथ खींचना। "
स्थानीय क्लाइंट को वास्तव में यह पता नहीं होता है कि अपडेट करने की क्या आवश्यकता है और ग्राहक को वास्तव में क्या चाहिए, इस बारे में रिमोट सिस्टम में बहुत कम जानकारी होती है, इसलिए मूल रूप से सर्वर को बहुत अधिक अनावश्यक जानकारी भेजनी होगी जो क्लाइंट को आवश्यकता हो सकती है या नहीं।
यह बहुत ही कुशल है अगर प्रदर्शन किया जा सकता है जिसमें सीमित संख्या में सरल चित्रमय आकार होते हैं और केवल एक कम ताज़ा आवृत्ति (कोई एनिमेशन और ऐसा नहीं) की आवश्यकता होती है। जो उन दिनों में वापस आ गया था जब X11 को पहली बार विकसित किया गया था।

लेकिन आधुनिक जीयूआई में बहुत सारे आई-कैंडी हैं और इनमें से बहुत कुछ दूरस्थ सिस्टम से अपने ग्राहक को बिटमैप / टेक्सचर / फोंट के रूप में भेजने की आवश्यकता है जो काफी बैंडविड्थ लेते हैं। और सभी प्रकार के आई-कैंडी में बार-बार अपडेट की आवश्यकता वाले एनिमेटेड प्रभाव शामिल हैं। और डिस्प्ले भी बड़ा हो रहा है, चौड़ी / उच्च के रूप में दो बार पिक्सल की संख्या 4x है।

बेशक, समय के साथ, X11 प्रोटोकॉल को बढ़ाने के लिए इसे जितना संभव हो उतना अनुकूलित करने के लिए बनाया गया था, लेकिन मूल अंतर्निहित डिजाइन संक्षेप में है, जीयूआई के लोगों की तरह आजकल की अपेक्षाओं के अनुकूल नहीं है।

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

न तो विधि सही है और हर स्थिति से समान रूप से अच्छी तरह से निपट सकती है। एकल प्रदर्शन-प्रोटोकॉल जैसी कोई चीज नहीं है जो हर बोधगम्य उपयोग-मामले के तहत अच्छा कर सकती है।
इसलिए ज्यादातर मामलों में आप सभी प्रोटोकॉल की कोशिश करते हैं जो आपके स्थानीय क्लाइंट और रिमोट सर्वर के बीच समर्थित होते हैं और जो सबसे अच्छा परिणाम देता है उसका उपयोग करते हैं। और कुछ मामलों में कोई विकल्प नहीं है और आपको बस जो कुछ भी उपलब्ध है उससे करना होगा।

अधिकांश प्रोटोकॉल कुछ प्रदर्शन ट्यूनिंग की अनुमति देते हैं, लेकिन इनमें से कई सेटिंग्स केवल सर्वर-साइड हैं और औसत उपयोगकर्ता के लिए उपलब्ध नहीं हैं। (और उन्हें ठीक से कॉन्फ़िगर करना एक रहस्यमय कला का एक सा है। बहुत सारे sys-admins उस के साथ खिलवाड़ करने के लिए तैयार नहीं होंगे।)

ज्यादातर मामलों में प्रदर्शन में सुधार करने का सबसे आसान तरीका (कभी-कभी काफी नाटकीय रूप से) कम आई-कैंडी के साथ अधिक सरल डेस्कटॉप वातावरण पर स्विच करके और पृष्ठभूमि छवियों के उपयोग को त्याग दिया जाता है।


15
+1 चूंकि RDP और VNC का उल्लेख किया गया है, मुझे x2go का भी उल्लेख करना चाहिए जो एक X11 कैशिंग / अग्रेषण समाधान है जो वास्तव में X11 अग्रेषण को गति देता है। मैंने अतीत में सफलता के साथ इसका उपयोग किया है।
रथ

7
अंत के पास "सर्वर-साइड ओनली सेटिंग्स" के बारे में, याद रखें कि एक्स सर्वर कंप्यूटर पर चलता है जो भौतिक प्रदर्शन से जुड़ा है, और एक्स क्लाइंट कुछ कार्य करने के लिए उपयोग किया जाने वाला सॉफ्टवेयर है (उदाहरण के लिए वेब ब्राउज़र या वर्ड प्रोसेसर )। तो X सर्वर सेटिंग्स एक ग्राफिकल एप्लिकेशन को चलाने के लिए रिमोट सिस्टम से कनेक्ट होने वाले उपयोगकर्ता के लिए सुलभ होगी। हालांकि, यह आपके उत्तर के मूल्य से महत्वपूर्ण रूप से अलग नहीं होता है।
बजे एक CVn

2
तकनीकी रूप से प्रोटोकॉल RFB है, VNC नहीं।
ऑरेंजडॉग

6
क्या मैं गलत हूं या आप अपने दूसरे पैराग्राफ में क्लाइंट और सर्वर को भ्रमित कर रहे हैं? क्लाइंट दूरस्थ रूप से चलने वाला प्रोग्राम है, सर्वर स्थानीय मशीन है।
जोनास श्‍फर

2
1990 के दशक में आपने जो तीसरे पैराग्राफ में कवर किया था, वह काफी हद तक 1990 के दशक में कम हो गया था क्योंकि एक्स सर्वर चलाने वाली मशीनों में पर्याप्त मेमोरी थी जो बैकिंग स्टोर को सक्षम करने के लिए एक व्यावहारिक चीज बन गई थी।
ब्लरफुल

45

X11 कनेक्शन के धीमे होने के मुख्य रूप से दो कारण हैं, दोनों में से आपने अपने प्रश्न में स्पर्श किया है: बैंडविड्थ और विलंबता। यह समझने के लिए कि X11 ऐप किसी नेटवर्क पर धीमा क्यों हैं, आइए इन दोनों पर चर्चा करें।

बैंडविड्थ

X11, डिफ़ॉल्ट रूप से, नेटवर्क डेटा पर कोई संपीड़न नहीं करता है जो एप्लिकेशन और डिस्प्ले सर्वर के बीच पास हो जाता है। जैसा कि आपने उल्लेख किया है, आप संपीड़न को सक्षम करने के लिए SSH पर -C विकल्प का उपयोग कर सकते हैं, और जब यह मदद करता है, तो यह ग्राफ़िकल डेटा को संपीड़ित करने के लिए अनुकूलित नहीं है। एच .264 जैसे प्रारूपों की तुलना में जो 100 से 1 की संपीड़न दरें प्राप्त कर सकते हैं, -सी संपीड़न 2 से 1 संपीड़न प्राप्त करने के लिए भाग्यशाली होगा। एक बेहतर समाधान X11 वीडियो के लिए ग्राफिक्स या वीडियो अनुकूलित कोडेक का उपयोग करना है, लेकिन हमें सावधान रहना होगा कि इसे बहुत हानिपूर्ण न बनाया जाए क्योंकि डेस्कटॉप को आमतौर पर एक फिल्म की तुलना में तेज छवियों की आवश्यकता होती है ताकि उपयोगकर्ता अभी भी पाठ को स्पष्ट रूप से पढ़ सके और अच्छा विवरण दें।

विलंब

X11 में उच्च विलंबता होती है क्योंकि अधिकांश कार्यों के लिए एप्लिकेशन और डिस्प्ले सर्वर के बीच कई दौर की यात्रा की आवश्यकता होती है। जब एक लैन पर चलाया जाता है, जहां पिंग बार एक मिलीसेकंड से कम होता है, तो ये कई गोल यात्राएं ध्यान देने योग्य नहीं होती हैं, लेकिन एक इंटरनेट कनेक्शन के दौरान वे जल्दी से जोड़ते हैं।

समाधान

कई साल पहले X11 प्रोटोकॉल में निहित बैंडविड्थ और विलंबता के मुद्दों को दूर करने के लिए एक जोड़े प्रोजेक्ट का निर्माण किया गया था। lbx (कम बैंडविड्थ एक्स) और डीएक्सपीसी (डिफरेंशियल एक्स प्रोटोकॉल कंप्रेसर)। मुझे नहीं लगता कि lbx को कभी बहुत अधिक कर्षण मिला, लेकिन dxpc NX नामक उत्पाद के लिए उपयोग की जाने वाली अंतर्निहित तकनीक बन गई । NX बैंडविड्थ आवश्यकताओं और एक अंतर एल्गोरिथ्म को कम करने के लिए हानिपूर्ण संपीड़न दोनों का उपयोग करता है और उच्च विलंबता पैदा करने वाली बैक-एंड-इनिंग जानकारी की संख्या को कम करने के लिए कैशिंग करता है। मैंने NX का काफी बार उपयोग किया है और प्रदर्शन को लगभग स्थानीय अनुप्रयोगों के समान अच्छा है। यदि आप इसे महसूस कर रहे हैं तो आप NX को आजमा सकते हैं और देखें कि क्या यह आपके लिए काम करता है। नकारात्मक पक्ष यह है कि इसे कनेक्शन के दोनों सिरों पर सॉफ़्टवेयर स्थापित करने की आवश्यकता है, जबकि X11 आम तौर पर पहले से ही स्थापित है।


3
विलंबता विषय से जुड़ा यह होगा कि अधिकांश स्ट्रीमिंग वीडियो के लिए X11 टीसीपी, बनाम यूडीपी होने वाला है। दूर से काम करने में मदद करने के लिए कुछ अन्य उत्पाद हैं। टोनी ने आरडीपी और वीएनसी का उल्लेख किया। ओरेकल अभी भी सन ग्लोबल डेस्कटॉप (SGD) बेचता है जो अच्छी तरह से काम करता है। Citrix के पास कुछ था (XenApp?)। हमारे eval ने हमारी आवश्यकताओं के लिए SGD को एक बेहतर विकल्प पाया, लेकिन इससे पहले दो Citrix उत्पादों का उपयोग किया था।
स्लीपवाइजेल

x2go ने मेरे लिए बहुत अच्छा काम किया, यहां तक ​​कि "सर्वर" के साथ एक पुराना लैपटॉप भी। कुछ ही मिनटों में ऊपर और चल रहा है ... X11 fwd (मेरे विन्यास के साथ अनुपयोगी) से प्रदर्शन में बड़ी वृद्धि
कॉमेट

लेटेंसी वार, ix मशीन पर, स्थानीय डिस्प्ले पर X11 सत्र आमतौर पर टीसीपी के बजाय यूनिक्स डोमेन सॉकेट का उपयोग करते हैं; यूनिक्स डोमेन सॉकेट्स, स्थानीय होस्टहोस्टओवरफ्लो . com/questions/14973942/ ...... पर भी दौर यात्राओं में टीसीपी से कई गुना तेज हैं । X11 ऐप्स के लिए वास्तव में पैथोलॉजिकल रूप से बड़ी संख्या में राउंड ट्रिप्स के साथ, यह ठीक और बिल्कुल धीमी गति से प्रदर्शन के बीच अंतर हो सकता है।
राकसाली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.