มีปัจจัยสำคัญหลายประการที่กำหนดปริมาณงานจาก EC2 ถึง S3:
- ขนาดไฟล์ - ไฟล์ขนาดเล็กต้องการจำนวนคำขอที่มากกว่าและค่าใช้จ่ายที่มากกว่าและการถ่ายโอนช้าลง การเพิ่มขนาดไฟล์เมื่อมาจาก EC2 นั้นเล็กน้อยสำหรับไฟล์ที่มีขนาดใหญ่กว่า 256kB (ในขณะที่การถ่ายโอนจากสถานที่ห่างไกลโดยมีความหน่วงแฝงที่สูงกว่ามีแนวโน้มที่จะแสดงการปรับปรุงที่เห็นได้อย่างต่อเนื่องจนกระทั่งระหว่าง 1MiB และ 2MiB)
- จำนวนเธรดแบบขนาน - เธรดการอัปโหลดเดียวมักจะมีค่าค่อนข้างต่ำตลอด - มักจะต่ำกว่า 5MiB / s ปริมาณงานเพิ่มขึ้นตามจำนวนเธรดที่เกิดขึ้นพร้อมกันและมีแนวโน้มสูงระหว่าง 64 ถึง 128 เธรด ควรสังเกตว่าอินสแตนซ์ขนาดใหญ่สามารถจัดการเธรดพร้อมกันจำนวนมากขึ้น
- ขนาดอินสแตนซ์ - ตามข้อกำหนดของอินสแตนซ์อินสแตนซ์ที่ใหญ่กว่ามีทรัพยากรที่ทุ่มเทมากกว่ารวมถึงการจัดสรรแบนด์วิธเครือข่าย (และ I / O โดยทั่วไปที่ใหญ่กว่า (และน้อยกว่า) - รวมถึงการอ่านจากดิสก์ ephemeral / EBS - ซึ่งเชื่อมต่อเครือข่าย ค่าตัวเลขสำหรับแต่ละประเภทคือ:
- สูงมาก: เชิงทฤษฎี: 10Gbps = 1250MB / s; สมจริง: 8.8Gbps = 1100MB / s
- สูง: ตามทฤษฎี: 1Gbps = 125MB / s; สมจริง: 750Mbps = 95MB / s
- ปานกลาง: ตามทฤษฎี: 250Mbps สมจริง: 80Mbps = 10MB / s
- ต่ำ: ตามทฤษฎี: 100Mbps; สมจริง: 10-15Mbps = 1-2MB / s
ในกรณีของการถ่ายโอนข้อมูลจำนวนมากอาจเป็นประโยชน์ทางเศรษฐกิจในการใช้อินสแตนซ์การคำนวณแบบคลัสเตอร์เนื่องจากการเพิ่มประสิทธิภาพในปริมาณงาน (> 10x) มีค่ามากกว่าความแตกต่างของต้นทุน (2-3x)
ในขณะที่ความคิดข้างต้นค่อนข้างสมเหตุสมผล (แม้ว่าอาจจะไม่ได้ต่อเธรด) แต่ก็เป็นเรื่องง่ายที่จะหาเกณฑ์มาตรฐาน หนึ่งในรายละเอียดโดยเฉพาะอย่างยิ่งสามารถพบได้ที่นี่
การใช้การอัพโหลดระหว่าง 1 ถึง 64 และ 128 ขนาน (พร้อมกัน) ของวัตถุ 1MB ควรทำให้อัปลิงค์อัป 1Gbps ที่ m1.x large มีและควรทำให้อัปลิงค์ 10Gbps ของอินสแตนซ์ของคลัสเตอร์คำนวณ (cc1.4xlarge) ด้วย
แม้ว่าการเปลี่ยนขนาดอินสแตนซ์จะค่อนข้างง่าย แต่ปัจจัยอีกสองประการอาจจัดการได้ยากกว่า
- ขนาดไฟล์มักจะได้รับการแก้ไข - เราไม่สามารถเข้าร่วมไฟล์ด้วยกันบน EC2 และแบ่งไฟล์ออกเป็น S3 (ดังนั้นไม่มีอะไรที่เราสามารถทำได้เกี่ยวกับไฟล์ขนาดเล็ก) ไฟล์ขนาดใหญ่อย่างไรก็ตามเราสามารถแยกทางด้าน EC2 และรวมกันอีกด้านของ S3 (โดยใช้การอัปโหลดหลายส่วนของ S3) โดยทั่วไปจะเป็นประโยชน์สำหรับไฟล์ที่มีขนาดใหญ่กว่า 100MB
- เธรดแบบขนานนั้นค่อนข้างยากที่จะรองรับ วิธีที่ง่ายที่สุดในการเขียน wrapper สำหรับสคริปต์อัพโหลดที่มีอยู่ซึ่งจะเรียกใช้หลาย ๆ ชุดพร้อมกัน แนวทางที่ดีกว่านั้นใช้ API โดยตรงเพื่อให้ได้สิ่งที่คล้ายกัน โปรดทราบว่าคีย์นั้นเป็นคำขอแบบขนานจึงไม่ยากที่จะค้นหาสคริปต์ที่อาจเกิดขึ้นได้หลายตัวอย่างเช่น:
- s3cmd-modified - ทางแยกของรุ่นก่อนหน้าของ s3cmd ที่เพิ่มฟังก์ชั่นนี้ แต่ยังไม่ได้รับการปรับปรุงในหลายปีที่ผ่านมา
- s3-parallel-put - สคริปต์ python ล่าสุดที่ใช้งานได้ดี