bench: measure Redis commands per job instead of inferring them

未关闭
#963 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 2 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
68/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
python, redis, rust

调研方向

Start with bench/harness/redis_scope.py to understand the existing non-destructive Redis handling, then locate the measured phases and artifact generation for each Redis-backed entrant. Use before-and-after INFO commandstats deltas divided by job count, report commands_per_job for every entrant, and update bench/README.md plus the benchmarks page to explain the approximation caveat and round-trip comparison.

由索引模型根据 Issue 内容生成。

描述

enhancement P2 storage

Epic: #958

Why

#958 asserts that FlexiQ loses the networked comparison because it spends more round trips per
job than the engines above it. Four are verified by reading the code, and the rest of the
per-job cost — the completion write, the result path, heartbeats — is inferred from a timing
that happens to fit. Inference is the wrong footing for the one claim the whole epic rests on,
and it is the wrong footing for a benchmark whose selling point is that a stranger can check it.

Commands per job is also the only figure in this comparison that is invariant to the link. It
explains a slow run on a 36 ms hop and it predicts a fast one on a local socket, which no
latency number here does.

Shape

Measure the Redis command count each entrant spends per job, and put it in the artifact beside
the timings. INFO commandstats gives per-command call counts; a delta across an entrant's
measured phase, divided by the job count, is the number.

Two honest caveats to encode rather than hide:

  • The instance may be shared. The published run used one that already held keys from the
    contract suites, so a delta is approximate and the artifact should say so. On a dedicated
    Redis it is exact.
  • CONFIG RESETSTAT is not ours to call on a server the harness does not own. Take a
    before-and-after delta instead of resetting; it is the same arithmetic without the side
    effect. This matches the rule bench/harness/redis_scope.py already follows — the harness
    never calls FLUSHDB either.

Reporting it per entrant makes the comparison self-evident: a queue that is one blocking pop
per job and a queue that is four round trips per job stop needing an argument.

Done when

  • commands_per_job is in the artifact for every Redis-backed entrant
  • bench/README.md states how it is derived and when it is approximate
  • the benchmarks page cites it where it currently asserts the round-trip explanation in prose
主要语言
Rust
星标
20
派生
2
平均合并
1 天 1 小时
30 天内合并 PR
11

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

ByteVeda/flexiq 的其他 Issue

查看 ByteVeda/flexiq 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。