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

Redis on Flash เร็วกว่า 3.7 เท่า: Data Engine ใหม่ และ Amazon EC2 I4i เพิ่มประสิทธิภาพ

Redis on Flash (RoF) เป็นหนึ่งใน enterprise functionalities ที่นิยมมากที่สุดของเรา ทำให้ in-memory computing คุ้มค่าด้านต้นทุนโดยเก็บข้อมูลสูงสุด 80% ของ datasets ใน SSD แทน DRAM ที่แพง และยังคง sub-millisecond latency และ high-throughput ของ Redis ใน typical deployments RoF ให้ TCO discount สูงสุด 70%

ตอนนี้ด้วย two new, exciting collaborations เราขอ announce อย่างภาคภูมิใจว่า RoF ตอนนี้ deliver up to 3.7x the performance (ส่งมอบประสิทธิภาพสูงสุด 3.7 เท่า) ในขณะที่รักษา total cost of ownership ที่น่าดึงดูดเดียวกันสำหรับการรัน large datasets บน Redis ก่อนอื่น AWS ได้ announce general availability ของ new generation instances คือ Amazon EC2 I4i ขับเคลื่อนโดย 3rd generation Intel Xeon Scalable processors (code-named Ice Lake) และ AWS Nitro SSD NVMe-based storage รุ่นใหม่นี้สัญญาว่าจะส่ง remarkable increase (การเพิ่มขึ้นที่น่าสังเกต) ใน performance สำหรับ data-intensive Redis customers เพิ่มเติม เรายินดีแชร์แผนที่จะ open data engine สำหรับ RoF ให้ any RocksDB compatible database ด้วย newly announced technology จาก Speedb เป็น first option

เราเชื่อว่าการรวมของ new I4i instances และการให้ customers choice สำหรับ data engine จะทำให้ RoF น่าดึงดูดยิ่งขึ้นสำหรับ massive datasets เนื่องจากความต้องการ real-time experiences เพิ่มขึ้นสำหรับ companies ที่สร้าง modern applications หรือ low latency microservice architectures

Amazon EC2 I4i และ Speedb นำอะไรมาให้ Redis on Flash?

มา dive (ดำน้ำลึก) เข้าสู่สิ่งใหม่บน RoF AWS เสนอ new Amazon EC2 I4i (ตัว 'i' ย่อมาจาก Intel) instances ทั่ว 4 regions I4i instances ใช้ latest technology คือ Intel Ice Lake processors และ AWS Nitro SSD ซึ่ง improves IOPS และ reduces latencies เทียบกับ previous generation ของ I3 instances

แยกจาก hardware เรากำลังมองหา ways ที่ RoF สามารถ deliver even greater performance และ identified opportunity ที่จะ open data engine ให้ innovation โดย customers และ entrepreneurs เรายินดี announce ว่า RoF ตอนนี้ open ให้ any RocksDB-compatible data engine และ Speedb เป็น alternative แรกที่เสนอโดย Redis ทำงานร่วมกับเรา ทีมที่ Speedb ได้ redesign RocksDB internal data structure ซึ่ง impressively increases (เพิ่มขึ้นอย่างน่าสังเกต) ทั้ง performance และ scale ในขณะที่ reducing CPU resources

ใน blog post นี้ เราแชร์ว่า Speedb ให้ significant performance boost เกือบ 50% ใน sub-millisecond tests ของเรา เทียบกับ RocksDB ไม่ว่าจะใช้ AWS EC2 instance ไหน I4i หรือ I3

RoF with Speedb พร้อมใช้งานใน private preview ขณะนี้ Redis customers สามารถติดต่อ account team เพื่อข้อมูลเพิ่มเติม หรือ trial ใหม่ service

Benchmarking ใหม่ Redis on Flash

Performance engineers ของเราไม่ทนทานรอได้ hands on (ลองจริง) AWS' I4i instances และ test พวกเขากับ RoF's new Speedb data engine เรา pleased (ยินดี) ที่จะเป็น first AWS partner ที่ thoroughly test (ทดสอบอย่างละเอียด) Amazon EC2 I4i instances เพื่อเตือน RoF intelligently tiers (จัดระดับอัจฉริยะ) large datasets และถูกออกแบบมาเพื่อ take advantage (ใช้ประโยชน์) ของ lower-priced per GiB ของ NVMe SSDs เทียบกับ DRAM นี่ enable เราให้ Redis-grade performance ตอนนี้เร็วกว่าด้วย I4i instances ที่ 30% total cost-of-ownership ของ DRAM-based instances

ก่อนจะไป benchmark results และ numbers มา review เมื่อไหร่ customer ควร consider RoF เราพัฒนา RoF สำหรับ use cases ที่ working dataset เล็กกว่า total dataset และ moving to additional DRAM เป็น cost-prohibitive (ห้ามเพราะแพง) Another common RoF use case คือ batch data processing ที่ huge amounts of data ต้อง processed สำหรับ business-critical applications ที่ต้องการ steady low latency และ high throughput ตลอดเวลา

ตอนนี้ไปที่ fun part (ส่วนสนุก) benchmark results

สิ่งที่เรา benchmark

เราเปรียบเทียบ performance ของ Redis on Flash บน 4 AWS instances:

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

เราเปรียบเทียบ performance ของ two data engines

  • RocksDB
  • Speedb

Test parameters (พารามิเตอร์การทดสอบ)

เราใช้ 1KiB value sizes ครอบคลุม most standard Redis use cases
เราทดสอบ 50% และ 85% RAM hit ratios (เช่น หลาย requests served โดยตรงจาก RAM)
เราทดสอบ 20:80 RAM:Flash ratio
เรา benchmarked various read:write ratios: 1:1, 4:1 และ 1:4
All tests ทำบน two servers
ต่อไปคือ database sizes ที่เรารันตาม instance types:

  • I4i.4xlarge: 500GB + replication. 5 Primary shards + 5 Replica shards
  • i3.8xlarge: 1TB + replication. 10 Primary shards + 10 Replica shards
  • I4i.8xlarge: 1TB + replication. 10 Primary shards + 10 Replica shards
  • I4i.16xlarge: 2TB + replication. 20 Primary shards + 20 Replica shards

ในแต่ละ configuration เราทดสอบว่ากี่ ops/sec สามารถบรรลุได้ ในขณะที่รักษา sub-millisecond client latency (ไม่รวม network)

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

กราฟด้านล่างแสดง i3 vs I4i และ RocksDB vs Speedb:

Redis on Flash เร็วกว่า 3.7 เท่า: Data Engine ใหม่ และ Amazon EC2 I4i เพิ่มประสิทธิภาพ

เราเห็น improvements (การปรับปรุง) ดังนี้:

From (จาก) to (ไป) Speedup factor (ตัวคูณความเร็ว)
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

กราฟด้านล่างแสดง scaling ด้วย I4i บน Speedb และ read:write ratios ที่ต่างกัน:

Redis on Flash เร็วกว่า 3.7 เท่า: Data Engine ใหม่ และ Amazon EC2 I4i เพิ่มประสิทธิภาพ

เราเห็น results และ improvements ดังนี้:

Scaling wise เราเห็นว่า RoF on I4i with Speedb scales almost linearly (เกือบเส้นตรง)

4xlarge → 8xlarge มี factor ~1.55x-1.8x
8xlarge → 16xlarge มี scaling factor ~1.85x-1.95x

ผลลัพธ์ที่สองที่น่าสังเกตคือ RoF on I4i with Speedb เป็น very agnostic to the application access pattern (read:write ratio) นั่นหมายความว่า performance อยู่ที่ steady (คงที่) และ predictable (คาดเดาได้) นั่นอาจ useful เมื่อทำงานกับ multiple different applications หรือเมื่อ access pattern เปลี่ยนแปลงตามเวลา

กราฟด้านล่างแสดง overall 3.7x performance improvement:

Redis on Flash เร็วกว่า 3.7 เท่า: Data Engine ใหม่ และ Amazon EC2 I4i เพิ่มประสิทธิภาพ

Appendix:
Benchmark setup

Redis Enterprise version: v. 6.2.8-39 on Ubuntu 18.04
Redis on Flash database: ดูรายละเอียดต่อ instance ด้านบน
Client machine: EC2 m5.8xlarge (32 VCPUs, 128 GB RAM)
Load Generation tool: memtier benchmark

Memtier sample command สำหรับ 85% ram hit ratio:
memtier_benchmark -s <database host IP> -p <database port>
–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

Setup illustration:

Redis on Flash เร็วกว่า 3.7 เท่า: Data Engine ใหม่ และ Amazon EC2 I4i เพิ่มประสิทธิภาพ