Redis on Flash(RoF)는 가장 인기 있는 엔터프라이즈 기능 중 하나였으며 데이터 세트의 최대 80%를 값비싼 DRAM이 아닌 SSD에 저장하고 밀리초 미만의 대기 시간을 유지하면서 인메모리 컴퓨팅을 비용 효율적으로 만듭니다. Redis의 높은 처리량. 일반적인 배포에서 RoF는 최대 70%의 TCO 할인을 제공합니다.
이제 두 가지 새롭고 흥미로운 협업을 통해 RoF가 이제 최대 3.7배의 성능을 제공할 수 있음을 발표하게 된 것을 자랑스럽게 생각합니다. Redis에서 대규모 데이터 세트를 실행할 때와 동일한 매력적인 총 소유 비용을 유지합니다. 먼저, AWS는 3세대 Intel Xeon Scalable 프로세서(코드명 Ice Lake) 및 AWS Nitro SSD NVMe 기반 스토리지로 구동되는 Amazon EC2 I4i의 새로운 세대 인스턴스의 일반 공급을 발표했습니다. 이 새로운 세대는 데이터 집약적 Redis 고객을 위한 놀라운 성능 향상을 약속합니다. 또한, Speedb에서 새로 발표된 기술을 첫 번째 옵션으로 사용하여 모든 RocksDB 호환 데이터베이스에 RoF용 데이터 엔진을 개방하려는 계획을 공유하게 된 것을 기쁘게 생각합니다.
우리는 새로운 I4i 인스턴스의 조합과 고객에게 데이터 엔진에 대한 선택권을 제공함으로써 대규모 데이터 세트에 대해 RoF를 더욱 매력적으로 만들 것이라고 믿습니다. 현대적인 애플리케이션 또는 저지연 마이크로서비스 아키텍처를 구축하는 기업의 실시간 경험에 대한 요구가 증가함에 따라
피>Amazon EC2 I4i 및 Speedb는 Redis on Flash에 무엇을 제공합니까?
RoF의 새로운 기능을 살펴보겠습니다. AWS는 4개 리전에 걸쳐 새로운 Amazon EC2 I4i('i'는 Intel용) 인스턴스를 제공하고 있습니다. I4i 인스턴스는 최신 기술인 Intel Ice Lake 프로세서 및 AWS Nitro SSD를 사용하여 이전 세대의 I3 인스턴스에 비해 IOPS를 개선하고 지연 시간을 줄입니다.
하드웨어와는 별도로 RoF가 훨씬 더 나은 성능을 제공할 수 있는 방법을 찾고 있으며 고객과 기업가가 혁신을 위해 데이터 엔진을 열 수 있는 기회를 식별했습니다. RoF는 이제 모든 RocksDB 호환 데이터 엔진에 개방되며 Speedb는 Redis가 제공하는 첫 번째 대안입니다. Speedb의 팀은 우리와 협력하여 RocksDB 내부 데이터 구조를 재설계하여 CPU 리소스를 줄이면서 성능과 확장성을 모두 향상시켰습니다.
이 블로그 게시물에서는 사용 중인 AWS EC2 인스턴스(I4i 또는 I3)에 관계없이 Speedb가 RocksDB와 비교하여 밀리초 미만의 테스트에서 거의 50%의 상당한 성능 향상을 제공하는 방법을 공유합니다.
Speedb가 포함된 RoF는 현재 비공개 미리 보기에서 사용할 수 있습니다. Redis 고객은 계정 팀에 추가 정보를 문의하거나 새 서비스를 체험해 볼 수 있습니다.
플래시에서 새로운 Redis 벤치마킹
우리의 성능 엔지니어는 AWS의 I4i 인스턴스를 손에 넣고 RoF의 새로운 Speedb 데이터 엔진으로 테스트하고 싶었습니다. Amazon EC2 I4i 인스턴스를 철저히 테스트한 최초의 AWS 파트너가 된 것을 기쁘게 생각합니다. 참고로 RoF는 대용량 데이터 세트를 지능적으로 계층화하고 DRAM에 비해 GiB당 저렴한 NVMe SSD를 활용하도록 설계되었습니다. 이를 통해 D램 기반 인스턴스의 총 소유 비용의 30%로 I4i 인스턴스를 통해 더욱 빠르게 Redis 등급 성능을 제공할 수 있습니다.
벤치마크 결과와 수치를 보기 전에 고객이 언제 RoF를 고려해야 하는지 검토해 보겠습니다. 우리는 작업 데이터 세트가 전체 데이터 세트보다 작고 추가 DRAM으로 이동하는 데 비용이 많이 드는 사용 사례를 위해 RoF를 개발했습니다. 또 다른 일반적인 RoF 사용 사례는 배치 데이터 처리입니다. 여기서 비즈니스 크리티컬 애플리케이션을 위해 막대한 양의 데이터를 처리해야 하며, 이 경우 지속적으로 짧은 대기 시간과 높은 처리량이 필요합니다.
이제 재미있는 부분, 벤치마크 결과로 이동합니다.
우리가 벤치마킹한 것
4개의 AWS 인스턴스에서 Redis on Flash의 성능을 비교했습니다.
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, 총 15TB의 NVMe SSD 드라이브 4개
두 데이터 엔진의 성능을 비교했습니다.
- 록스DB
- 속도
테스트 매개변수
대부분의 표준 Redis 사용 사례를 다루는 1KiB 값 크기를 사용했습니다.
50% 및 85% RAM 적중률을 테스트했습니다(즉, RAM에서 직접 제공되는 많은 요청).
20:80 RAM:플래시 비율을 테스트했습니다.
다양한 읽기:쓰기 비율을 벤치마킹했습니다: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개
각 구성에서 밀리초 미만의 클라이언트 대기 시간(네트워크 제외)을 유지하면서 달성할 수 있는 작업/초 수를 테스트했습니다.
발견된 것
아래 그래프는 i3 대 I4i 및 RocksDB 대 Speedb를 보여줍니다.
다음과 같은 개선 사항을 확인할 수 있습니다.
시작 | 대상 | 속도 향상 요소 |
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 |
아래 그래프는 Speedb 및 다양한 읽기:쓰기 비율에서 I4i를 사용한 확장을 보여줍니다.
다음과 같은 결과와 개선 사항을 확인할 수 있습니다.
현명하게 확장하면 Speedb가 있는 I4i의 RoF가 거의 선형으로 확장된다는 것을 알 수 있습니다.
4xlarge → 8xlarge의 계수는 ~1.55x-1.8x입니다.
8xlarge → 16xlarge는 ~1.85x-1.95x의 배율을 가집니다.
두 번째로 주목할만한 결과는 Speedb가 있는 I4i의 RoF가 애플리케이션 액세스 패턴(읽기:쓰기 비율)에 대해 매우 불가지론적이라는 것입니다. 이는 성능이 안정적으로 유지되고 예측 가능함을 의미합니다. 이는 여러 다른 애플리케이션으로 작업하거나 액세스 패턴이 시간에 따라 변할 때 유용할 수 있습니다.
아래 그래프는 전반적인 3.7배의 성능 향상을 보여줍니다.
부록:
벤치마크 설정
Redis Enterprise 버전:Ubuntu 18.04의 v. 6.2.8-39
Redis on Flash 데이터베이스:위의 인스턴스별 세부정보 참조
클라이언트 머신:EC2 m5.8xlarge(32개의 VCPU, 128GB RAM)
로드 생성 도구:memtier 벤치마크
85% 램 적중률에 대한 Memtier 샘플 명령:
memtier_benchmark -s <데이터베이스 호스트 IP> -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
설치 그림: