Files
ldb/test-redis/README.md
2026-03-07 07:29:32 +00:00

107 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## run_bench.hash.sh 使用指南
- 脚本:`test-redis/run_bench.hash.sh`
- 默认策略:`persist_no` / `persist_everysec` / `nopersist`
- 测试模式:`set` + `prefill+get`
- 默认参数:`REQ=1000000 KEYSPACE=1000000 PIPE=128 VSIZE=32 ROUNDS=5 RETRIES=3`
### 运行示例
```bash
# 默认运行5轮
./test-redis/run_bench.hash.sh
# 指定大 key 参数(示例)
ROUNDS=5 REQ=1000000 KEYSPACE=1000000 PIPE=128 VSIZE=256 RETRIES=3 ./test-redis/run_bench.hash.sh
```
### 常用环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
| `ROUNDS` | `5` | 每个策略的轮次 |
| `REQ` | `1000000` | 单次 bench 请求数 |
| `KEYSPACE` | `1000000` | key 空间大小 |
| `PIPE` | `128` | pipeline 深度 |
| `VSIZE` | `32` | value 大小(字节) |
| `RETRIES` | `3` | 单轮失败重试次数 |
| `SEED` | `12345` | 随机种子基数 |
| `ALLOC` | `mypool` | allocator |
| `KV_PORT` | `8888` | kvstore 端口 |
| `SET_CMD` / `GET_CMD` | `RSET` / `RGET` | 压测命令 |
## 大Key持久化协议复测覆盖版
- 时间口径2026-03-07本次重测
- 参数:`requests=1000000 pipeline=128 keyspace=1000000 value-size=256`
- 轮次:每种策略 `5`
- 去异常规则:每个场景按 `qps``5` 轮做中位数偏差,剔除偏差最大 `1` 轮,再对剩余 `4` 轮取均值
- kvstore 源数据:`results/hash_bench_fair_summary_20260307_062549.csv`
- redis 源数据:`results/redis_bigkey_summary_20260307_063158.csv`
- kvstore 去异常结果:`results/hash_bench_fair_trimmed_20260307_062549.csv`
- redis 去异常结果:`results/redis_bigkey_trimmed_20260307_063158.csv`
## kvstore 原始5轮
| 策略 | 模式 | Round1 | Round2 | Round3 | Round4 | Round5 | 原始均值QPS | 原始均值us/op |
|---|---|---:|---:|---:|---:|---:|---:|---:|
| persist_no | set | 139895.00 | 138768.00 | 138867.00 | 143296.00 | 144388.00 | 141042.80 | 7.09 |
| persist_no | get | 163764.00 | 164079.00 | 166415.00 | 163959.00 | 147881.00 | 161219.60 | 6.21 |
| persist_everysec | set | 133067.00 | 126140.00 | 133430.00 | 139786.00 | 141145.00 | 134713.60 | 7.43 |
| persist_everysec | get | 162076.00 | 165415.00 | 162180.00 | 163762.00 | 158226.00 | 162331.80 | 6.16 |
| nopersist | set | 157950.00 | 143109.00 | 135043.00 | 152045.00 | 147233.00 | 147076.00 | 6.82 |
| nopersist | get | 163381.00 | 169356.00 | 155890.00 | 164754.00 | 157550.00 | 162186.20 | 6.17 |
## kvstore 去异常后4轮均值
| 策略 | 模式 | 剔除轮次 | 剔除QPS | 去异常均值QPS | 去异常均值us/op |
|---|---|---:|---:|---:|---:|
| persist_no | set | 5 | 144388.00 | 140206.50 | 7.13 |
| persist_no | get | 5 | 147881.00 | 164554.25 | 6.08 |
| persist_everysec | set | 5 | 141145.00 | 133105.75 | 7.52 |
| persist_everysec | get | 5 | 158226.00 | 163358.25 | 6.12 |
| nopersist | set | 3 | 135043.00 | 150084.25 | 6.67 |
| nopersist | get | 3 | 155890.00 | 163760.25 | 6.11 |
## kvstore 协议开销(基线 nopersist去异常后
| 策略 | set QPS变化 | set us/op变化 | get QPS变化 | get us/op变化 |
|---|---:|---:|---:|---:|
| persist_no | -6.58% | +6.90% | +0.48% | -0.49% |
| persist_everysec | -11.31% | +12.74% | -0.25% | +0.16% |
## Redis 原始5轮
| 策略 | 模式 | Round1 | Round2 | Round3 | Round4 | Round5 | 原始均值QPS | 原始均值us/op |
|---|---|---:|---:|---:|---:|---:|---:|---:|
| none | set | 198673.00 | 211843.00 | 193900.00 | 208293.00 | 211071.00 | 204756.00 | 4.89 |
| none | get | 225347.00 | 221000.00 | 218357.00 | 216466.00 | 214747.00 | 219183.40 | 4.56 |
| aof_no | set | 144042.00 | 139615.00 | 140016.00 | 149925.00 | 150658.00 | 144851.20 | 6.91 |
| aof_no | get | 210541.00 | 211713.00 | 202589.00 | 231251.00 | 402028.00 | 251624.40 | 4.24 |
| aof_everysec | set | 143737.00 | 132998.00 | 136973.00 | 144448.00 | 142414.00 | 140114.00 | 7.14 |
| aof_everysec | get | 212422.00 | 201051.00 | 211508.00 | 192190.00 | 209874.00 | 205409.00 | 4.87 |
## Redis 去异常后4轮均值
| 策略 | 模式 | 剔除轮次 | 剔除QPS | 去异常均值QPS | 去异常均值us/op |
|---|---|---:|---:|---:|---:|
| none | set | 3 | 193900.00 | 207470.00 | 4.82 |
| none | get | 1 | 225347.00 | 217642.50 | 4.59 |
| aof_no | set | 5 | 150658.00 | 143399.50 | 6.98 |
| aof_no | get | 5 | 402028.00 | 214023.50 | 4.68 |
| aof_everysec | set | 2 | 132998.00 | 141893.00 | 7.05 |
| aof_everysec | get | 4 | 192190.00 | 208713.75 | 4.79 |
## Redis 协议开销(基线 none去异常后
| 策略 | set QPS变化 | set us/op变化 | get QPS变化 | get us/op变化 |
|---|---:|---:|---:|---:|
| aof_no | -30.88% | +44.81% | -1.66% | +1.96% |
| aof_everysec | -31.61% | +46.27% | -4.10% | +4.36% |
## 简要结论
1. 本次大 key256持久化开销主要体现在 `set``get` 相对更稳。
2. `aof_no/aof_everysec` 在 Redis 写路径的开销明显kvstore 三策略在写路径也存在可见差异。
3. 本报告已剔除每场景 1 个异常轮次,避免单点抖动主导结论。