dragonflydb / dragonflydb/dragonfly

[Milstone 2] Cloud Benchmark: IoLoopV2 vs V1 (Async, PubSub, ZADD)

Open
#7,443 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
31.5k
Forks
1.3k
Avg merge
1d 10h
Merged PRs (30d)
137

Description

Before enabling IoLoopV2 for RESP by default (`--enable_resp_io_loop_v2=true`), we need cloud-environment performance validation across three workload classes.

Results posted here will drive the Go/No-Go decision for default-enabling V2 and prioritize M3/M4 work items.

Parent Epic: #6006

## Workloads

### 1. Async-Supported Commands (GET, SET, MGET)
* **Goal:** V2 ≥ V1 throughput. With lock contention removed, V2 should match or exceed V1.

### 2. PubSub Fan-out (p=1, p=10, p=100)
* **Goal:** Verify PR #7437 successfully closed the 2x syscall regression. V2 RPS should be within 10% of V1.

### 3. Commands Without Async Dispatch (ZADD, pipelined)
* **Goal:** Quantify the architectural impact of V2 lacking V1's `SquashPipeline()`.
* **Action:** If regression is >15%, we port `SquashPipeline()` to V2 (Task 13 in the optimization plan). If ≤15%, we accept the deferred flush behavior and deprioritize.

## Methodology

- **Environment:** Cloud instances (not local laptops) - post topology, instance type, and kernel version.
- **Metrics:** Report RPS, p50/p99 latency, CPU%, and syscall counts (`strace -c` or `perf stat`).
- **Pipeline Depths:** Run at p=1, p=10, and p=100.

## Tasks

- [ ] Provision cloud instances and document topology.
- [ ] Workload 1: Async commands — post results.
- [ ] Workload 2: PubSub fan-out — post results.
- [ ] Workload 3: ZADD pipelined — post results.
- [ ] Final verdict: Enable `--enable_resp_io_loop_v2=true` by default? (Y/N with justification).

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the RESP IoLoopV2 flag, parent epic #6006, and PR #7437, then provision cloud instances and run the GET/SET/MGET, PubSub, and pipelined ZADD workloads at the specified depths. Record topology, instance type, kernel version, RPS, p50/p99 latency, CPU usage, and syscall counts; done means posting results and a justified default-enable verdict.

Written by the indexing model from the issue text.

Assessment

Tech stack
cloud, cpp
Domain
cloud, databases, performance
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.