सवाल X11 अग्रेषण इतनी अक्षम क्यों है?


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

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

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

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

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

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

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


80
2018-06-08 13:26


मूल


सामान्य ज्ञान: Xpra एक दिलचस्प दृष्टिकोण प्रदान करता है। - Kamil Maciorowski
बीटीडब्ल्यू - "-C" का उपयोग करके आपका कनेक्शन धीमा हो जाएगा यदि आपका लिंक पर्याप्त तेज़ है क्योंकि संपीड़न में समय लगता है। "-सी" 100 एमबी का लाभ उठा सकता है, लेकिन संभवतः 1 जीबी को नुकसान पहुंचा सकता है, और निश्चित रूप से 10 जीबी को नुकसान पहुंचा सकता है। यह भी मामला है कि 'एसएसएच' आपके थ्रूपुट को नुकसान पहुंचाएगा - जैसे कि तेजी से लिंक पर कोई एन्क्रिप्शन होगा। यदि आपके पास कंप्यूटर या सुरक्षित आंतरिक-लिंकेज के बीच सीधा संबंध है, तो टीसीपी: 6000 पर अपने एक्स कनेक्शन के साथ सीधे जाएं। आपको एक उल्लेखनीय गति सुधार मिलेगा। - Astara
लगता है जैसे आप एसएसएच के माध्यम से अग्रेषित कर रहे हैं, जिसे सभी डेटा एन्क्रिप्ट / डिक्रिप्ट करना है। वह ओवरहेड / विलंबता जोड़ने जा रहा है। तेज़ प्रोसेसर मदद कर सकते हैं, लेकिन यह निश्चित रूप से विलंबता की एक निश्चित मात्रा है, इससे कोई फर्क नहीं पड़ता कि आप क्या करते हैं। एक्स बहुत "चतुर" है, इसलिए विलंबता में मामूली वृद्धि = प्रदर्शन में महत्वपूर्ण गिरावट। पिछले समय में, मैं एक्स का उपयोग करने में सक्षम था, 28.8 मॉडेम पर एसएसएच के माध्यम से सुरंग; वह lbxproxy (अब बहिष्कृत) का उपयोग कर रहा था जो बहुत सारे डेटा को कैश / संपीड़ित करता था और कनेक्शन की "चतुरता" को कम करता था। -C का उपयोग केवल अधिक विलंबता जोड़ सकते हैं। - Meower68
कुछ का प्रयोग करें ssh -Y -c blowfish अभी भी एन्क्रिप्टिंग करते समय ओवरहेड को कम करने के लिए। यदि आपके पास दोनों सिरों का पूरा नियंत्रण है तो कनेक्शन पर पूर्ण स्थानांतरण गति प्राप्त करने के लिए "कोई नहीं" एन्क्रिप्शन का उपयोग करने के लिए एसएसएच सिखाएं। - Thorbjørn Ravn Andersen


जवाब:


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

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

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

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

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

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

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

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


104
2018-06-08 14:31



+1 चूंकि आरडीपी और वीएनसी का उल्लेख किया गया है, मुझे भी उल्लेख करना चाहिए x2go जो एक एक्स 11 कैशिंग / अग्रेषण समाधान है जो वास्तव में एक्स 11 अग्रेषण को गति देता है। मैंने इसे अतीत में सफलतापूर्वक इस्तेमाल किया है। - rath
अंत में "सर्वर-साइड केवल सेटिंग्स" के संबंध में, याद रखें कि एक्स सर्वर कंप्यूटर पर चलता है जो भौतिक प्रदर्शन से जुड़ा होता है, और एक्स ग्राहक सॉफ्टवेयर कुछ कार्य करने के लिए प्रयोग किया जाता है (उदाहरण के लिए एक वेब ब्राउज़र या वर्ड प्रोसेसर)। इसलिए एक्स सर्वर सेटिंग्स ग्राफ़िकल एप्लिकेशन चलाने के लिए रिमोट सिस्टम से कनेक्ट करने वाले उपयोगकर्ता के लिए पहुंच योग्य होगी। हालांकि, यह आपके उत्तर के मूल्य से महत्वपूर्ण रूप से अलग नहीं होता है। - α CVn
तकनीकी तौर पर प्रोटोकॉल आरएफबी है, वीएनसी नहीं। - OrangeDog
क्या मैं गलत हूं या आप अपने दूसरे पैराग्राफ में क्लाइंट और सर्वर को भ्रमित कर रहे हैं? क्लाइंट दूरस्थ रूप से चल रहा प्रोग्राम है, सर्वर स्थानीय मशीन है। - Jonas Schäfer
मेरे परीक्षण के मुताबिक, आरडीपी एक्स 11 से तेज नहीं है। वीएनसी कई मामलों में है क्योंकि इसकी फ्रेम-ड्रॉप क्षमता बैंडविड्थ को सीमित करने वाले फ़्रेमेट्स द्वारा धीमा होने से अनुप्रयोगों को रोकती है। - Joshua


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

बैंडविड्थ

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

विलंब

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

समाधान की

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


36
2018-06-08 16:04



विलंबता विषय से जुड़ा होगा कि X11 सबसे स्ट्रीमिंग वीडियो के लिए टीसीपी, बनाम यूडीपी होगा। दूरस्थ रूप से काम करने में मदद करने के लिए कुछ अन्य उत्पाद हैं। टोनी ने आरडीपी और वीएनसी का उल्लेख किया। ओरेकल अभी भी सन ग्लोबल डेस्कटॉप (एसजीडी) बेचता है जो अच्छी तरह से काम करता है। साइट्रिक्स में कुछ था (XenApp?)। हमारे eval एसजीडी हमारी जरूरतों के लिए एक बेहतर विकल्प होने के लिए मिला, लेकिन पहले दो सिट्रिक्स उत्पादों का इस्तेमाल किया था। - sleepyweasel
x2go ने मेरे लिए बहुत अच्छा काम किया, यहां तक ​​कि "सर्वर" के साथ एक पुराना लैपटॉप भी। कुछ मिनटों में ऊपर और चल रहा है ... X11 fwd से प्रदर्शन में बड़ी वृद्धि (मेरी कॉन्फ़िगरेशन के साथ अनुपयोगी) - comte