Redis on Flash (RoF) là một trong những chức năng enterprise phổ biến nhất, làm cho in-memory computing hiệu quả chi phí bằng cách lưu tới 80% dataset trên SSD thay vì DRAM đắt đỏ, vẫn giữ latency sub-millisecond và throughput cao của Redis. Triển khai điển hình, RoF cung cấp tới 70% giảm TCO.
Giờ đây với hai hợp tác mới thú vị, chúng tôi tự hào tuyên bố RoF giờ có thể cung cấp hiệu suất lên tới 3.7x đồng thời giữ TCO hấp dẫn cho chạy dataset lớn trên Redis. Thứ nhất, AWS công bố sẵn sàng chung (general availability) generation instance mới, Amazon EC2 I4i, supported by bộ xử lý Intel Xeon Scalable thế hệ 3 (mã Ice Lake) và lưu trữ AWS Nitro SSD NVMe. Generation mới này hứa hẹn tăng hiệu suất đáng kể cho khách hàng Redis data-intensive. Thứ hai, chúng tôi vui mừng chia sẻ kế hoạch mở data engine cho RoF cho bất kỳ database tương thích RocksDB nào, với công nghệ mới công bố từ Speedb, làm lựa chọn đầu tiên.
Chúng tôi tin sự kết hợp instance I4i mới và cho khách hàng lựa chọn data engine sẽ làm RoF hấp dẫn hơn cho dataset khổng lồ, khi nhu cầu trải nghiệm thời gian thực tăng cho công ty xây dựng ứng dụng hiện đại hoặc kiến trúc microservice low latency.
Amazon EC2 I4i Và Speedb Mang Gì Cho Redis on Flash?
Hãy đi sâu vào gì mới trên RoF. AWS cung cấp instance Amazon EC2 I4i mới ('i' cho Intel) trên 4 region. Instance I4i dùng công nghệ mới nhất, bộ xử lý Intel Ice Lake và AWS Nitro SSD, cải thiện IOPS và giảm latency so với generation I3 trước.
Tách biệt từ phần cứng, chúng tôi tìm cách RoF có thể mang lại hiệu suất lớn hơn và xác định cơ hội mở data engine cho đổi mới bởi khách hàng và doanh nhân. Chúng tôi vui mừng công bố RoF giờ mở cho bất kỳ data engine tương thích RocksDB nào và Speedb là lựa chọn thay thế đầu tiên do Redis cung cấp. Làm việc cùng chúng tôi, team Speedb đã thiết kế lại cấu trúc dữ liệu nội bộ RocksDB ấn tượng tăng cả hiệu suất và scale đồng thời giảm tài nguyên CPU.
Trong bài blog này, chúng tôi chia sẻ Speedb cung cấp performance boost gần 50% tại test sub-millisecond so với RocksDB, bất kể instance AWS EC2 nào dùng, I4i hay I3.
RoF với Speedb hiện tại có sẵn trong private preview. Khách hàng Redis có thể liên hệ account team để thông tin thêm hoặc trial dịch vụ mới.
Benchmark Redis on Flash Mới
Kỹ sư hiệu suất chúng tôi không thể chờ để test instance AWS I4i với data engine Speedb mới của RoF. Chúng tôi vui là đối tác AWS đầu tiên test kỹ instance Amazon EC2 I4i. Nhắc lại, RoF thông minh tier dataset lớn và được thiết kế tận dụng giá thấp hơn per GiB của NVMe SSD so với DRAM. Điều này cho phép chúng tôi cung cấp hiệu suất cấp Redis, giờ nhanh hơn với instance I4i, tại 30% total cost-of-ownership của instance dựa trên DRAM.
Trước khi vào kết quả benchmark, xem khi nào khách hàng nên xem xét RoF. Chúng tôi phát triển RoF cho use case working dataset nhỏ hơn total dataset và chuyển sang DRAM thêm tốn kém. Use case RoF phổ biến khác: xử lý dữ liệu batch (batch data processing), nơi lượng lớn dữ liệu cần xử lý cho ứng dụng business-critical, yêu cầu low latency ổn định và high throughput theo thời gian.
Benchmark Gì?
So Sánh Hiệu Suất Redis on Flash Trên Bốn Instance AWS:
- i3.8xlarge – 244GB RAM, 4xNVMe SSD drives, tổng 7.6TB
- I4i.4xlarge – 128GB RAM, 1xNVMe SSD drives, tổng 3.75TB
- I4i.8xlarge – 256GB RAM, 2xNVMe SSD drives, tổng 7.5TB
- I4i.16xlarge – 512GB RAM, 4xNVMe SSD drives tổng 15TB
So Sánh Hiệu Suất Hai Data Engine
- RocksDB
- Speedb
Tham Số Test
- Dùng value size 1KiB, bao phủ hầu hết use case Redis tiêu chuẩn
- Test 50% và 85% RAM hit ratio (nhiều request phục vụ trực tiếp từ RAM)
- Test tỷ lệ 20:80 RAM:Flash
- Benchmark các tỷ lệ read:write: 1:1, 4:1 và 1:4
- Tất cả test dùng hai server
- Kích thước database theo instance type:
- 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
Mỗi cấu hình, test bao nhiêu ops/sec đạt được trong khi giữ client latency sub-millisecond (không tính network)
Kết Quả Tìm Thấy
Biểu đồ dưới so sánh i3 vs I4i và RocksDB vs Speedb:

Có thể thấy các cải tiến sau:
| Từ | Đến | Hệ số tăng tốc |
| 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 |
Biểu đồ dưới cho thấy scaling với I4i trên Speedb và tỷ lệ read:write khác nhau:

Có thể thấy kết quả và cải tiến sau:
Về scaling, RoF trên I4i với Speedb scale gần như tuyến tính.
4xlarge → 8xlarge: factor ~1.55x-1.8x
8xlarge → 16xlarge: scaling factor ~1.85x-1.95x
Kết quả đáng chú ý thứ hai: RoF trên I4i với Speedb rất agnostic với application access pattern (tỷ lệ read:write). Nghĩa là hiệu suất ổn định và dự đoán được. Hữu ích khi làm việc với nhiều ứng dụng khác nhau hoặc access pattern thay đổi theo thời gian.
Biểu đồ dưới cho thấy tổng thể cải tiến 3.7x hiệu suất:

Phụ lục:
Thiết lập Benchmark
- Redis Enterprise version: v. 6.2.8-39 trên Ubuntu 18.04
- Redis on Flash database: xem chi tiết theo instance ở trên
- Client machine: EC2 m5.8xlarge (32 VCPUs, 128 GB RAM)
- Load Generation tool: memtier benchmark
Memtier sample command cho 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
Sơ đồ thiết lập:
