2008-11-11 7 views
13

निम्न स्तर के HTTP और एफ़टीपी स्थानांतरण को कार्यान्वित करते समय अधिकतम थ्रूपुट के लिए कोई बफर (बाइट्स जिसे मैं पढ़ता हूं या लिखता हूं) का आकार कैसे चुनता हूं? मेरे आवेदन को 130 केबीपीएस से 3 एमबीपीएस (मैं पहले से अपेक्षित गति को जानता हूं) से अलग कनेक्शन पर HTTP या FTP के साथ डेटा स्थानांतरित करना चाहिए। कभी-कभी यह एक तरह से स्थानांतरण होता है, कभी-कभी यह दोनों दिशाओं में जाता है। क्या मुझे कुछ औसत बफर आकार के साथ चिपकना चाहिए या मुझे कनेक्शन की गति के आधार पर इसे अलग करना चाहिए?एफ़टीपी और HTTP ट्रांसफर के लिए बफर आकार का चयन

धन्यवाद।

उत्तर

6

सबसे पहले, कुछ माप प्राप्त करें।

फिर, आपके पास विश्वसनीय प्रदर्शन माप होने के बाद, अपने बफर आकार में परिवर्तन करें और गति बनाम बफर आकार का ग्राफ प्लॉट करें।

चूंकि आप पहले से कनेक्शन की गति को जानते हैं, इसलिए आपको विभिन्न वास्तविक बफर आकारों के साथ वास्तविक गति के कुछ माप प्राप्त करने में सक्षम होना चाहिए।

ओएस, प्रोटोकॉल स्टैक और नेटवर्क पहले सिद्धांतों से एक जवाब तैयार करने के लिए बहुत जटिल है। कुछ भी करने से पहले आपको मापने की जरूरत है।

+0

धन्यवाद। मापन कुछ ऐसा है जो हम अभी में हैं। मैंने सोचा कि कुछ सामान्य एल्गोरिदम हो सकता है या 2x एमटीयू या कुछ ऐसा उपयोग करने की सलाह दे सकता है ... ठीक है, तो यह माप है। – wasker

+0

यदि कोई सामान्य एल्गोरिदम था, तो यह प्रोटोकॉल के हिस्से के रूप में पहले से ही लागू किया गया होगा। कभी जेनेरिक एल्गोरिदम नहीं होते हैं जिन्हें कार्यान्वित नहीं किया गया है। मापना आपकी एकमात्र पसंद है। –

11

8 केबी पर एक बफर आकार चुनें। 9000 आमतौर पर सबसे तेज़ नेटवर्क में उपयोग किया जाने वाला सबसे बड़ा एमटीयू (अधिकतम ट्रांसमिशन यूनिट) आकार होता है।

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

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

तो, आम तौर पर 16 केबी की तरह एक अच्छा दौर संख्या चुनना एक अच्छा विचार है। निश्चित रूप से 1500 से कम नहीं जाते हैं, क्योंकि यह नेटवर्क प्रदर्शन को नकारात्मक रूप से प्रभावित कर सकता है (ऑपरेटिंग सिस्टम को कभी-कभी छोटे पैकेट भेजने के लिए, जो नेटवर्क पर प्रदर्शन को कम करता है)।

+0

हाय, आपके विचारों के लिए धन्यवाद। क्या होगा यदि हम धीमी नेटवर्क (130 केबीपीएस) और द्वि-दिशात्मक हस्तांतरण (मान लें, हमारे पास सममित कनेक्शन है) के बारे में बात कर रहे हैं। क्या दूसरे बफरों को लाभ पहुंचाने के दौरान बड़े बफर एक दिशा में संचरण को नहीं हटाएंगे? – wasker

+0

यह लिंक की भौतिक विशेषताओं (सरल बनाम डुप्लेक्स) पर निर्भर करता है। अधिकांश ईथरनेट कनेक्शन डुप्लेक्स होते हैं, जिसका अर्थ है कि वे एक ही समय में भेज और प्राप्त कर सकते हैं। – SoapBox

+0

लेकिन नेटवर्क में आम तौर पर भीड़ पैकेट की संख्या (उनके आकार नहीं) के कारण होती है। इतने सारे छोटे पैकेट कुछ बड़े लोगों की तुलना में अधिक समस्याएं पैदा कर सकते हैं। – SoapBox

संबंधित मुद्दे