การอ้างสมรรถนะของ s5cmd เผชิญการทดสอบในโลกจริงขณะที่ผู้ใช้รายงานผลลัพธ์ที่หลากหลาย

ทีมบรรณาธิการ BigGo
การอ้างสมรรถนะของ s5cmd เผชิญการทดสอบในโลกจริงขณะที่ผู้ใช้รายงานผลลัพธ์ที่หลากหลาย

เครื่องมือ S3 แบบโอเพนซอร์ส s5cmd ได้รับความสนใจจากการอ้างว่ามีความเร็วสูงกว่า AWS CLI ถึง 150 เท่า แต่การทดสอบจากชุมชนเผยให้เห็นภาพสมรรถนะที่ซับซ้อนกว่า แม้ว่าเครื่องมือนี้จะสัญญาว่าสามารถใช้การเชื่อมต่อ 40Gbps ได้เต็มที่ที่ 4.3 GB/s แต่การทดลองในโลกจริงแสดงผลลัพธ์ที่แตกต่างออกไป

การอ้างสมรรถนะถูกตรวจสอบอย่างละเอียด

ผู้ใช้กำลังทดสอบการอ้างความเร็วที่กล้าหาญของ s5cmd ด้วยผลลัพธ์ที่หลากหลาย นักพัฒนาคนหนึ่งได้ทำการเปรียบเทียบประสิทธิภาพอย่างละเอียดโดยใช้ AWS instance ระดับสูงที่มีเครือข่าย 25Gbps ในการดาวน์โหลดไฟล์ขนาด 10GB จาก S3 ผลลัพธ์แสดงให้เห็นว่า s5cmd ใช้เวลา 24 วินาทีขณะที่สร้าง thread ประมาณ 20 ตัว แต่ทางเลือกที่ใช้ Python สามารถทำงานเดียวกันได้ใน 10 วินาที เมื่อปรับให้เหมาะสมด้วย 80 workers เครื่องมือ Python สามารถทำการถ่ายโอนได้ใน 6 วินาที โดยบรรลุ throughput ที่ 1.6GB/s

ผมเพิ่งสร้าง r6a.16xlarge ที่มี NIC 25gbps สร้างไฟล์ 10GB ซึ่งผมอัปโหลดไปยัง S3 bucket ในภูมิภาคเดียวกัน ผ่าน S3 VPC endpoint ในเครื่อง การดาวน์โหลดไฟล์ 10GB นั้นไปยัง /dev/shm ด้วย s5cmd ใช้เวลา 24 วินาที ขณะที่สร้าง thread ประมาณ 20 ตัวที่ทั้งหมดกำลังรอ IO อยู่

การทดสอบนี้เน้นย้ำถึงความซับซ้อนของการปรับปรุงประสิทธิภาพ S3 ที่การเชื่อมต่อแต่ละครั้งมักจำกัดที่ประมาณ 80MB/s และ throughput ของไฟล์เดียวไม่ค่อยเกิน 1.6GB/s ต่อ EC2 instance

ผลการเปรียบเทียบประสิทธิภาพ:

  • การอ้างสิทธิ์ของ s5cmd : ความเร็วสูงสุด 4.3 GB/s บนการเชื่อมต่อ 40Gbps
  • การทดสอบในโลกแห่งความจริง (ไฟล์ 10GB, AWS instance 25Gbps):
    • s5cmd : 24 วินาที (417 MB/s)
    • ทางเลือก Python : 10 วินาที (1 GB/s)
    • เครื่องมือ Python ที่ปรับแต่งแล้ว: 6 วินาที (1.6 GB/s)
  • ขีดจำกัดการเชื่อมต่อ S3 แต่ละรายการ: ~80 MB/s
  • ขีดจำกัดปริมาณงานไฟล์เดียว: ~1.6 GB/s ต่อ EC2 instance

การจัดการไฟล์เล็กแสดงศักยภาพ

แม้จะมีผลลัพธ์ที่หลากหลายกับไฟล์ขนาดใหญ่ แต่ s5cmd ดูเหมือนจะเป็นเลิศในการดำเนินการกับไฟล์เล็ก ผู้ใช้หลายคนรายงานการปรับปรุงที่สำคัญเมื่อทำงานกับไฟล์เล็กจำนวนมากที่มีขนาดต่ำกว่า 1MB วิธีการประมวลผลแบบขนานของเครื่องมือนี้แก้ไขปัญหาคอขวด S3 ที่พบบ่อย ซึ่งการอัปโหลดไฟล์เล็กจำนวนมากแบบต่อเนื่องอาจช้ามาก แม้แต่การใช้งานแบบขนานพื้นฐานก็แสดงการปรับปรุงความเร็วอย่างมากสำหรับกรณีการใช้งานนี้

การกำหนดค่าเริ่มต้นของ s5cmd :

  • Workers เริ่มต้น: 256
  • เกณฑ์ขั้นต่ำของ workers: 8
  • ขีดจำกัดการทำงานพร้อมกัน: 256
  • ความสมบูรณ์ของข้อมูล: การตรวจสอบ MD5 checksum และ ETag/Size (เป็นตัวเลือก)
  • API: ใช้ AWS SDK for Go พร้อม ListObjectsV2

เครื่องมือทางเลือกและการแข่งขัน

การอภิปรายเผยให้เห็นสนามที่แออัดของเครื่องมือปรับปรุง S3 ผู้ใช้กล่าวถึง rclone สำหรับการสนับสนุนหลายโปรโตคอลรวมถึง Google Drive และ WebDAV, geesefs สำหรับการ mount S3 และเครื่องมือเฉพาะทางเช่น s3glob สำหรับการจัดการวัตถุนับล้านด้วยการจับคู่รูปแบบ ผู้ให้บริการโฮสติ้งบางรายตอนนี้เสนอ s5cmd เป็นบริการที่ติดตั้งไว้ล่วงหน้า ซึ่งช่วยลดความจำเป็นในการติดตั้งและบำรุงรักษาในเครื่อง

ข้อมูลเชิงลึกการใช้งานในโลกจริง

ผู้ใช้ในการผลิตรายงานว่า s5cmd มีประสิทธิภาพสูงกว่า AWS CLI อย่างสม่ำเสมอในระดับที่สำคัญ แม้ว่าการเพิ่มความเร็วที่แน่นอนจะแตกต่างกันไปตามกรณีการใช้งาน ความสำเร็จมักขึ้นอยู่กับการกำหนดค่าที่เหมาะสม รวมถึงการปรับขนาด chunk และจำนวน worker ประสิทธิผลของเครื่องมือดูเหมือนจะเด่นชัดที่สุดในสถานการณ์เฉพาะมากกว่าการเป็นโซลูชันประสิทธิภาพ S3 แบบสากล

การทดสอบจากชุมชนที่กำลังดำเนินอยู่แสดงให้เห็นความสำคัญของการตรวจสอบในโลกจริงสำหรับเครื่องมือประสิทธิภาพ แม้ว่า s5cmd จะให้การปรับปรุงที่แท้จริงในหลายสถานการณ์ แต่ผู้ใช้ควรทำการเปรียบเทียบประสิทธิภาพสำหรับกรณีการใช้งานเฉพาะของพวกเขามากกว่าการพึ่งพาตัวเลขประสิทธิภาพหัวข้อข่าวเพียงอย่างเดียว

อ้างอิง: s5cmd

หน้า GitHub repository สำหรับโปรเจกต์ s5cmd แสดงให้เห็นการมีส่วนร่วมและการมีส่วนร่วมของชุมชน
หน้า GitHub repository สำหรับโปรเจกต์ s5cmd แสดงให้เห็นการมีส่วนร่วมและการมีส่วนร่วมของชุมชน