mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-08 13:06:00 +00:00
test(scanner): measure heal pacing and cache cost (#7433)
* test(scanner): measure heal pacing and cache cost
Co-Authored-By: heihutu <heihutu@gmail.com>
Co-Authored-By: zhi22915 <qiuzgang@gmail.com>
* fix(error): merge equivalent api message branches
Co-Authored-By: heihutu <heihutu@gmail.com>
Co-Authored-By: zhi22915 <qiuzgang@gmail.com>
* fix(heal): cleanup consumed MRF replay journals
Do not retain Accepted or Merged replay intents as startup anchors after they have been handed to the heal manager. Only refused or still-pending replay records keep the journal on disk until a successor snapshot can persist them.
This keeps successor snapshots limited to the pending queue, which lets successful replay remove both authoritative and legacy journal paths and restores the crash-boundary tests around successor flush.
Co-Authored-By: heihutu <heihutu@gmail.com>
Co-Authored-By: zhi22915 <qiuzgang@gmail.com>
(cherry picked from commit d5b8f49c9d)
---------
Co-authored-by: zhi22915 <qiuzgang@gmail.com>
Co-authored-by: Zhengchao An <anzhengchao@gmail.com>
This commit is contained in:
@@ -125,6 +125,11 @@ and `metrics`. All metrics must be finite nonnegative numbers: `p99_ms`,
|
||||
`throughput_ops`, `rss_bytes`, `cpu_seconds`, `iops`, `rpc_count`,
|
||||
`cache_clone_bytes`, `encode_bytes`, `save_bytes`, `oldest_age_seconds`,
|
||||
`walk_objects`, `cold_walk_objects`, `healed_objects`, `errors`, and `requests`.
|
||||
The adapter also reports the measurement-window delta of
|
||||
`rustfs_heal_mainline_throttle_total{source="admin",result="delayed"}` as
|
||||
`heal_mainline_throttle_delayed`; a cumulative process-lifetime value is not a
|
||||
valid input.
|
||||
The clone, encode, and save byte fields are also deltas from the same window.
|
||||
Requests, throughput, and p99 must be positive; errors must be zero. Repair
|
||||
counts must match the manifest when background work is on. Keep underlying
|
||||
request samples, counter reset checks, profiler captures, and per-node telemetry
|
||||
@@ -132,6 +137,19 @@ in the cell artifact directory; aggregate values alone do not establish their
|
||||
measurement provenance. Missing production instrumentation is a pending gate,
|
||||
not permission to report a fabricated zero.
|
||||
|
||||
Each comparison records a `w22` section with clone, encode, and save bytes per
|
||||
walked object, clone/encode and save/encode byte ratios, and candidate changes.
|
||||
These are traffic amplification indicators, not allocation attribution or an
|
||||
fsync profile. The `running-heal` build comparison also records a `w10`
|
||||
section. `status=observed` requires sampled high foreground pressure, at least
|
||||
one admin pacing delay in the same window, and an improvement in either
|
||||
foreground p99 or throughput. `no_measured_benefit` means pacing ran but neither
|
||||
foreground metric improved; `pending` means the run did not prove that pacing
|
||||
engaged; `inconclusive` means ABBA repeatability failed. Baseline and candidate
|
||||
delay counts are both retained so an operator can reject unrelated or
|
||||
process-lifetime counter contamination. Correct repair oracles and the existing
|
||||
regression limits still apply in every case.
|
||||
|
||||
For P2, `measure.convergence` contains booleans `writes_stopped`,
|
||||
`last_mutation_observed`, `first_complete_publication`; numeric
|
||||
`last_mutation_time`, `last_mutation_observed_time`, `writes_stopped_time`, `window_start`, `window_end`,
|
||||
|
||||
Reference in New Issue
Block a user