107 lines
4.9 KiB
Markdown
107 lines
4.9 KiB
Markdown
## 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. 本次大 key(256)下,持久化开销主要体现在 `set`,`get` 相对更稳。
|
||
2. `aof_no/aof_everysec` 在 Redis 写路径的开销明显;kvstore 三策略在写路径也存在可见差异。
|
||
3. 本报告已剔除每场景 1 个异常轮次,避免单点抖动主导结论。
|