EC2 से S3 तक थ्रूपुट निर्धारित करने वाले कई प्रमुख कारक हैं:
- फ़ाइल का आकार - छोटी फ़ाइलों के लिए अधिक संख्या में अनुरोध और अधिक ओवरहेड और स्थानांतरण धीमा करने की आवश्यकता होती है। 256kB से बड़ी फ़ाइलों के लिए फ़ाइलें (जब EC2 से उत्पन्न होती हैं) के साथ लाभ नगण्य है। (जबकि, उच्च अक्षांश के साथ एक दूरस्थ स्थान से स्थानांतरित करना, 1MiB और 2MiB के बीच प्रशंसनीय सुधार दिखाना जारी रखता है)।
- समानांतर थ्रेड्स की संख्या - एक एकल अपलोड थ्रेड में आमतौर पर काफी कम होता है - अक्सर 5MiB / s से नीचे। समवर्ती धागे की संख्या से थ्रूपुट बढ़ता है, और 64 और 128 धागे के बीच चरम पर पहुंच जाता है। यह ध्यान दिया जाना चाहिए कि बड़े उदाहरण समवर्ती धागे की एक बड़ी संख्या को संभालने में सक्षम हैं।
- उदाहरण का आकार - उदाहरण के विनिर्देशों के अनुसार , बड़े उदाहरणों में नेटवर्क बैंडविड्थ का एक बड़ा (और कम चर) आवंटन (और I / O सहित) में अधिक समर्पित संसाधन होते हैं, जिसमें अल्पकालिक / ईबीएस डिस्क से पढ़ना शामिल है - जो नेटवर्क से जुड़े होते हैं। प्रत्येक श्रेणी के लिए संख्या मान हैं:
- बहुत अधिक: सैद्धांतिक: 10 जीबीपीएस = 1250 एमबी / एस; यथार्थवादी: 8.8 जीबीपीएस = 1100 एमबी / एस
- उच्च: सैद्धांतिक: 1 जीबीपीएस = 125 एमबी / एस; यथार्थवादी: 750 एमबीपीएस = 95 एमबी / एस
- मध्यम: सैद्धांतिक: 250 एमबीपीएस; यथार्थवादी: 80 एमबीपीएस = 10 एमबी / एस
- कम: सैद्धांतिक: 100 एमबीपीएस; यथार्थवादी: 10-15 एमबीपीएस = 1-2 एमबी / एस
बड़ी मात्रा में डेटा स्थानांतरित करने के मामलों में, क्लस्टर गणना उदाहरण का उपयोग करना आर्थिक रूप से व्यावहारिक हो सकता है, क्योंकि थ्रूपुट (> 10x) में प्रभावी लाभ लागत (2-3x) के अंतर से अधिक है।
हालांकि उपरोक्त विचार काफी तार्किक हैं (हालांकि, प्रति-धागा कैप नहीं हो सकता है), बेंचमार्क को उन्हें ढूंढना काफी आसान है। एक विशेष रूप से विस्तृत यहाँ पाया जा सकता है ।
1 एमबी ऑब्जेक्ट के 64 और 128 समानांतर (एक साथ) अपलोड के बीच का उपयोग करके 1Gbps अपलिंक को संतृप्त करना चाहिए जो कि m1.xlarge के पास है और क्लस्टर गणना (cc1.xlarge) उदाहरण के 10Gbps अपलिंक को भी संतृप्त करना चाहिए।
हालांकि, उदाहरण के आकार को बदलना काफी आसान है, अन्य दो कारकों को प्रबंधित करना कठिन हो सकता है।
- फ़ाइल का आकार आमतौर पर तय किया जाता है - हम EC2 पर एक साथ फ़ाइलों में शामिल नहीं हो सकते हैं और उन्हें S3 पर अलग कर सकते हैं (इसलिए, वहाँ बहुत कुछ नहीं है जो हम छोटी फ़ाइलों के बारे में कर सकते हैं)। हालाँकि बड़ी फाइलें, हम EC3 की तरफ अलग हो सकते हैं और S3 के पक्ष में फिर से जुट सकते हैं (S3 के बहु-भाग अपलोड का उपयोग करके)। आमतौर पर, यह उन फ़ाइलों के लिए फायदेमंद है जो 100MB से बड़ी हैं।
- समानांतर धागे को पूरा करने के लिए थोड़ा कठिन है। सबसे सरल दृष्टिकोण कुछ मौजूदा अपलोड स्क्रिप्ट के लिए एक आवरण लिखने के लिए नीचे आता है जो एक ही बार में इसकी कई प्रतियां चलाएगा। बेहतर दृष्टिकोण कुछ इसी तरह पूरा करने के लिए सीधे एपीआई का उपयोग करते हैं। यह ध्यान में रखते हुए कि कुंजी समानांतर अनुरोध है, उदाहरण के लिए, कई संभावित लिपियों का पता लगाना मुश्किल नहीं है:
- s3cmd-modification - s3cmd के प्रारंभिक संस्करण का एक कांटा जिसने इस कार्यक्षमता को जोड़ा, लेकिन कई वर्षों में इसे अपडेट नहीं किया गया।
- s3-समानांतर-पुट - हाल ही में अजगर स्क्रिप्ट जो अच्छी तरह से काम करती है