Skip to content

Runtime 基准 ​

本页记录可复现的 Runtime 基准,不代表任何部署环境的 SLA。结果必须与测试环境、 样本数和运行命令一起发布。

运行 ​

准备一个可清理的 PostgreSQL 数据库,然后执行:

bash
TEST_POSTGRES_URL=postgresql://postgres:postgres@127.0.0.1:5432/blade_agent_test \
  pnpm benchmark:runtime

可通过以下环境变量调整样本数:

  • BENCHMARK_SESSIONS,默认 100
  • BENCHMARK_EVENTS,默认 1000

脚本为每次运行创建独立 schema,并在结束时删除。它输出 JSON,CI 或历史采集器 可以直接保存和比较结果。

完整 CI 回归门禁:

bash
TEST_POSTGRES_URL=postgresql://postgres:postgres@127.0.0.1:5432/blade_agent_test \
TEST_DOCKER_IMAGE=alpine@sha256:... \
  pnpm verify:runtime-regression

该命令执行稳态 benchmark 和真实 Docker checkpoint failover,写入 artifacts/runtime-regression.json,再应用 benchmarks/runtime-regression-policy.json。 PR CI 保留报告 30 天,Release CI 保留 90 天。

指标定义 ​

指标定义
storeInitializationMs创建并迁移一个全新 Runtime Store schema 的耗时
firstClaimLatencyMsAgentWorker.start() 到首次领取 Session 的耗时
sessionThroughputPerSecond无模型延迟的 Session claim、状态转换和 lease 释放吞吐
recoveryDurationMs已确认 lease 过期后,执行恢复扫描并由第二个 worker 领取的耗时
eventLossRate写入事件数与按 cursor 分页读回事数量之差占比;sequence 不连续也记为 1
processTerminationMs发出 SIGKILL 到观察到 Worker 进程退出
leaseExpiryWaitMs进程退出到数据库 lease 到期
failureDetectionMs发出 SIGKILL 到 recovery scan 完成并识别失效 owner
recoveryScanMsPostgreSQL recovery transaction 本身耗时
reclaimAndRestoreMsrecovery scan 完成到第二个 Worker 恢复 checkpoint 并完成 Session
checkpointRestoreMsDockerExecutionHost.restore() 的独立耗时
fullRecoveryRtoMs发出 SIGKILL 到恢复后的 Session 完成;这是完整 RTO

Session throughput 是运行时上限测试,不包含模型或外部工具延迟。 recoveryDurationMs 不包含等待 lease TTL 到期的时间。 容量规划和故障恢复应使用 fullRecoveryRtoMs,而不是旧的 recoveryDurationMs。

CI 门禁 ​

CI 固定使用至少 100 个 Session 和 1000 个 event,并执行完整 Docker checkpoint failover:

当前绝对阈值:

  • Session throughput 不低于 20 sessions/s;100 个 Session 在 10s 内完成。
  • 完整 Docker failover RTO 不超过 15s,其中 failure detection 不超过 3.5s、checkpoint restore 不超过 5s。
  • event loss 必须严格为 0。

这些是跨 CI runner 的宽松绝对 guardrail,不把不同机器上的微基准差异误判为 回归。调整阈值必须修改版本化 policy 并接受代码审查;不能通过降低样本数绕过。

2026-08-26 基线 ​

环境:

text
Node.js v22.23.1
macOS Darwin 25.5.0
PostgreSQL 16.15(Colima)
100 Sessions / 1000 events

结果:

原始 JSON: benchmarks/baselines/2026-08-26-darwin-arm64.json

指标结果
Runtime Store 初始化77.04 ms
首次 Session claim13 ms
Session 吞吐106.48 sessions/s
100 个 Session 完成耗时939.16 ms
Worker 恢复与重新领取14.67 ms
事件丢失率0

发布回归门槛:

  • 上述历史 JSON 是开发机基线,不是 CI 的唯一判据。
  • CI 使用版本化绝对 policy,并保留包含原始子报告、逐项 check 和环境信息的 完整 artifact。

Released under the MIT License.