मैं एक स्थानीय नेटवर्क में एफ़टीपी सर्वर पर बहुत सारे डेटा और डेटा (~ 100 फाइल एक्स 2 जीबी) को स्थानांतरित करने के लिए पायथन के ftplib का उपयोग कर रहा हूं। यह कोड उबंटू पर चल रहा है। यहाँ मेरी कॉल है (स्वयं मेरी FtpClient वस्तु है, जो ftplib ग्राहक के चारों ओर एक आवरण है):पायथन ftplib इष्टतम ब्लॉक आकार?
# Store file.
self.ftpClient.storbinary('STOR ' + destination, fileHandle, blocksize = self.blockSize, callback = self.__UpdateFileTransferProgress)
मेरा प्रश्न है, मैं कैसे एक इष्टतम ब्लॉक आकार का चयन करते हैं? मेरी समझ यह है कि इष्टतम ब्लॉक आकार कई चीजों पर निर्भर है, जिनमें से कम से कम कनेक्शन की गति और विलंबता नहीं है। मेरा कोड कई अलग-अलग नेटवर्कों पर चल रहा है, जिसमें विभिन्न गति और दिन भर भीड़ की अलग-अलग मात्रा होती है। आदर्श रूप में, मैं रन टाइम पर इष्टतम ब्लॉक आकार की गणना करना चाहता हूं।
क्या इष्टतम एफ़टीपी स्थानांतरण ब्लॉक आकार इष्टतम टीसीपी विंडो आकार के समान होगा? यदि यह सत्य है, और टीसीपी विंडो स्केलिंग चालू है, तो क्या कर्नेल से इष्टतम टीसीपी विंडो आकार प्राप्त करने का कोई तरीका है? लिनक्स कर्नेल इष्टतम विंडो आकार कैसे/कब निर्धारित करता है? आदर्श रूप से मैं लिनक्स कर्नेल को इष्टतम ब्लॉक आकार के लिए पूछ सकता हूं, ताकि पहिया को पुनर्निर्मित करने से बचें। http://erlerobotics.gitbooks.io/erle-robotics-python-gitbook-free/content/udp_and_tcp/udp_fragmentation.html
लेकिन, आप भी बारे में सोचना चाहिए:
नेटवर्क के रूप में (होना चाहिए ... मैं/ओ डिस्क की तुलना में धीमी है मैं/हे, [गिरी कि का ख्याल आप के लिए ले जाना चाहिए] http : //en.wikipedia.org/wiki/Nagle%27s_algorithm)। आप 'TCP_CORK' विकल्प सेट करने पर भी विचार कर सकते हैं। – Phillip
आप किस तरह की सहमति की उम्मीद कर रहे हैं या यहां उपयोग कर रहे हैं? क्या यह एक सिंगल थ्रेडेड एप्लीकेशन होना है? क्या आप मल्टीप्लेक्ड असिंक्रोनस I/O से लाभ उठा सकते हैं? –