Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

Redis on Flash:เร็วขึ้น 3.7 เท่าด้วย Data Engine ใหม่และอินสแตนซ์ Amazon EC2 I4i

Redis on Flash (RoF) เป็นหนึ่งในฟังก์ชันระดับองค์กรที่ได้รับความนิยมมากที่สุดของเรา ทำให้การประมวลผลในหน่วยความจำคุ้มค่าโดยการจัดเก็บชุดข้อมูลได้ถึง 80% ใน SSD แทนที่จะเป็น DRAM ที่มีราคาแพง และในขณะที่ยังคงรักษาเวลาแฝงต่ำกว่ามิลลิวินาทีและ Redis ปริมาณงานสูง ในการปรับใช้ทั่วไป RoF มอบส่วนลด TCO สูงสุด 70%

ด้วยความร่วมมือใหม่ที่น่าตื่นเต้น 2 ครั้ง เราภูมิใจที่จะประกาศว่า RoF สามารถให้ประสิทธิภาพเพิ่มขึ้นถึง 3.7 เท่า ในขณะเดียวกันก็รักษาต้นทุนรวมในการเป็นเจ้าของที่น่าดึงดูดใจสำหรับการเรียกใช้ชุดข้อมูลขนาดใหญ่บน Redis ประการแรก AWS ได้ประกาศความพร้อมใช้งานทั่วไปของอินสแตนซ์รุ่นใหม่ นั่นคือ Amazon EC2 I4i ซึ่งขับเคลื่อนโดยโปรเซสเซอร์ Intel Xeon Scalable เจนเนอเรชั่นที่ 3 (ชื่อรหัส Ice Lake) และพื้นที่จัดเก็บบน AWS Nitro SSD NVMe รุ่นใหม่นี้สัญญาว่าจะให้ประสิทธิภาพที่เพิ่มขึ้นอย่างน่าทึ่งสำหรับลูกค้า Redis ที่เน้นข้อมูลมาก นอกจากนี้ เรายินดีที่จะแบ่งปันแผนการของเราในการเปิดโปรแกรมข้อมูลสำหรับ RoF ไปยังฐานข้อมูลที่เข้ากันได้กับ RocksDB ด้วยเทคโนโลยีที่เพิ่งประกาศใหม่จาก Speedb เป็นตัวเลือกแรก

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

Amazon EC2 I4i และ Speedb นำอะไรมาสู่ Redis บน Flash

มาดูกันว่ามีอะไรใหม่ใน RoF AWS ขอเสนออินสแตนซ์ Amazon EC2 I4i ใหม่ ("i" สำหรับ Intel) ใน 4 ภูมิภาค อินสแตนซ์ I4i ใช้เทคโนโลยีล่าสุด โปรเซสเซอร์ Intel Ice Lake และ AWS Nitro SSD ซึ่งปรับปรุง IOPS และลดเวลาแฝงเมื่อเทียบกับอินสแตนซ์ I3 รุ่นก่อนหน้า

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

ในบล็อกโพสต์นี้ เราแชร์วิธีที่ Speedb ให้ประสิทธิภาพที่เพิ่มขึ้นเกือบ 50% ในการทดสอบระดับย่อยของมิลลิวินาทีเมื่อเทียบกับ RocksDB ไม่ว่าเราจะใช้อินสแตนซ์ AWS EC2 แบบใด I4i หรือ I3

ขณะนี้ RoF พร้อม Speedb พร้อมใช้งานในการแสดงตัวอย่างส่วนตัว ลูกค้า Redis สามารถติดต่อทีมบัญชีของตนเพื่อขอข้อมูลเพิ่มเติมหรือทดลองใช้บริการใหม่ได้

การเปรียบเทียบ Redis ใหม่บน Flash

วิศวกรด้านประสิทธิภาพของเราแทบรอไม่ไหวที่จะได้รับมือกับอินสแตนซ์ I4i ของ AWS และทดสอบด้วยกลไกข้อมูล Speedb ใหม่ของ RoF เรายินดีที่ได้เป็นคู่ค้า AWS รายแรกในการทดสอบอินสแตนซ์ Amazon EC2 I4i อย่างละเอียด เพื่อเป็นการเตือนความจำ RoF จะจัดระดับชุดข้อมูลขนาดใหญ่อย่างชาญฉลาดและได้รับการออกแบบเพื่อใช้ประโยชน์จากราคาต่อ GiB ของ NVMe SSD ที่ถูกกว่าเมื่อเทียบกับ DRAM ซึ่งช่วยให้เราส่งมอบประสิทธิภาพระดับ Redis ได้เร็วขึ้นด้วยอินสแตนซ์ I4i ที่ต้นทุนการเป็นเจ้าของทั้งหมด 30% ของอินสแตนซ์ที่ใช้ DRAM

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

มาถึงส่วนที่สนุกแล้ว ผลการเปรียบเทียบ

สิ่งที่เราเปรียบเทียบ

เราเปรียบเทียบประสิทธิภาพของ Redis บน Flash กับอินสแตนซ์ AWS สี่รายการ:

i3.8xlarge – 244GB RAM, ไดรฟ์ 4xNVMe SSD รวม 7.6TB
I4i.4xlarge – 128GB RAM, 1xNVMe SSD ไดรฟ์ รวม 3.75TB
I4i.8xlarge – 256GB RAM, 2xNVMe SSD ไดรฟ์ รวม 7.5TB
I4i.16xlarge – 512GB RAM, ไดรฟ์ SSD 4xNVMe รวม 15TB

เราเปรียบเทียบประสิทธิภาพของเครื่องมือข้อมูล 2 รายการ

  • RocksDB
  • Speedb

ทดสอบพารามิเตอร์

เราใช้ขนาดค่า 1KiB ซึ่งครอบคลุมกรณีการใช้งาน Redis มาตรฐานส่วนใหญ่
เราทดสอบอัตราส่วนการเข้าถึง RAM 50% และ 85% (เช่น คำขอจำนวนมากส่งตรงจาก RAM)
เราทดสอบ RAM 20:80:อัตราแฟลช
เราเปรียบเทียบอัตราส่วนการอ่าน:เขียนต่างๆ:1:1, 4:1 และ 1:4
การทดสอบทั้งหมดทำโดยใช้สองเซิร์ฟเวอร์
ต่อไปนี้คือขนาดฐานข้อมูลที่เราเรียกใช้ตามประเภทอินสแตนซ์:

  • I4i.4xlarge:500GB + การจำลองแบบ 5 ชาร์ดหลัก + 5 ชาร์ดจำลอง
  • i3.8xlarge:1TB + การจำลองแบบ 10 ชาร์ดหลัก + 10 ชาร์ดจำลอง
  • I4i.8xlarge:1TB + การจำลองแบบ 10 ชาร์ดหลัก + 10 ชาร์ดจำลอง
  • I4i.16xlarge:2TB + การจำลองแบบ 20 ชาร์ดหลัก + 20 ชาร์ดจำลอง

ในการกำหนดค่าแต่ละรายการ เราได้ทดสอบจำนวน ops/sec ที่สามารถทำได้โดยรักษาเวลาแฝงของไคลเอ็นต์ที่ต่ำกว่ามิลลิวินาที (ไม่รวมเครือข่าย)

สิ่งที่เราพบ

กราฟด้านล่างแสดง i3 เทียบกับ I4i และ RocksDB เทียบกับ Speedb:

Redis on Flash:เร็วขึ้น 3.7 เท่าด้วย Data Engine ใหม่และอินสแตนซ์ Amazon EC2 I4i

เราเห็นการปรับปรุงดังต่อไปนี้:

จาก ถึง ปัจจัยเร่งความเร็ว
i3.8xlarge rocksdb i3.8xlarge speedb 1.3x
I4i.8xlarge rocksdb I4i.8xlarge speedb 1.46x
i3.8xlarge rocksdb I4i.8xlarge rocksdb 1.94x
i3.8xlarge speedb I4i.8xlarge speedb 2.16x
i3.8xlarge rocksdb I4i.8xlarge speedb 2.83x

กราฟด้านล่างแสดงการปรับขนาดด้วย I4i บน Speedb และอัตราส่วนการอ่าน:เขียนที่แตกต่างกัน:

Redis on Flash:เร็วขึ้น 3.7 เท่าด้วย Data Engine ใหม่และอินสแตนซ์ Amazon EC2 I4i

เราเห็นผลลัพธ์และการปรับปรุงดังต่อไปนี้:

ในแง่สเกล เราจะเห็นว่า RoF บน I4i ที่มี Speedb นั้นปรับขนาดได้เกือบเป็นเส้นตรง

4xlarge → 8xlarge มีแฟคเตอร์ ~1.55x-1.8x
8xlarge → 16xlarge มีตัวคูณสเกลอยู่ที่ ~1.85x-1.95x

ผลลัพธ์ที่น่าสังเกตประการที่สองคือ RoF บน I4i ที่มี Speedb ไม่เชื่อเรื่องรูปแบบการเข้าถึงแอปพลิเคชันมาก (อัตราส่วนการอ่าน:เขียน) นั่นหมายถึงประสิทธิภาพจะคงที่และสามารถคาดการณ์ได้ ซึ่งจะมีประโยชน์เมื่อทำงานกับแอปพลิเคชันต่างๆ หลายตัว หรือเมื่อรูปแบบการเข้าถึงแตกต่างกันไปตามช่วงเวลา

กราฟด้านล่างแสดงการปรับปรุงประสิทธิภาพโดยรวม 3.7 เท่า:

Redis on Flash:เร็วขึ้น 3.7 เท่าด้วย Data Engine ใหม่และอินสแตนซ์ Amazon EC2 I4i

ภาคผนวก:
การตั้งค่าเกณฑ์มาตรฐาน

เวอร์ชัน Redis Enterprise:v. 6.2.8-39 บน Ubuntu 18.04
Redis บนฐานข้อมูล Flash:ดูรายละเอียดต่ออินสแตนซ์ด้านบน
เครื่องไคลเอ็นต์:EC2 m5.8xlarge (32 VCPU, 128 GB RAM)
เครื่องมือสร้างโหลด:เกณฑ์มาตรฐาน memtier

คำสั่งตัวอย่าง Memtier สำหรับอัตราการเข้าชม ram 85%:
memtier_benchmark -s -p
–hide-histogram –pipeline=1 -c 4 -t 256  -d 1000
–key-maximum=771141855 –key-pattern=G:G –key-stddev=50358491
–ratio=1:1 –distinct-client-seed –randomize –test-time=1200

ภาพประกอบการติดตั้ง:

Redis on Flash:เร็วขึ้น 3.7 เท่าด้วย Data Engine ใหม่และอินสแตนซ์ Amazon EC2 I4i