Skip to content

docs: record the fetch-width measurement - #123

Merged
leonardoazeredo merged 1 commit into
mainfrom
docs/record-fetch-width-measurement
Sep 22, 2026
Merged

leonardoazeredo merged 1 commit into
mainfrom
docs/record-fetch-width-measurement

Conversation

@leonardoazeredo

Copy link
Copy Markdown
Owner

Records the measurement docs/MAINTENANCE.md asked for under "Measuring whether one fetch stream beats three" — the section previously said nobody had run it.

Result: the width stays 3

Two arms on a quiet box (ingest held down, io full avg10 1.6% before the first), same walk, same gate, only FETCH_WORKERS differing, each with a 1 Hz sampler over /proc/pressure/io and fields 3/7 of /sys/block/{sda,sdb}/stat:

Arm A — width 3 Arm B — width 1
releases fetched 3 2 — its third pass the gate refused
payload read 44.09 GB 12.30 GB
written, logical, per device 105.22 GB 31.45 GB
written per byte read 2.39× 2.56×
wall clock 22.8 min 17.3 min
throughput 1.93 GB/min 0.71 GB/min — 37%
peak io full avg10 66.83% 70.71%
platter written, both devices 210.4 GB 62.9 GB

Width 1 delivered 37% of width 3's throughput against the 80% bar this section set for switching, and bought nothing back. The arms were not the same releases and that cuts against the result rather than for it: arm A included a 27.59 GB RAR-packed release that needed 55 volumes unpacked locally, arm B included none, and arm A still had the lower churn ratio and lower peak.

Why it matters beyond the flag

Written bytes per byte read barely move with the width, so the platter cost is a property of the pipeline — payload.zip written, extracted, and (for a packed release) its RAR volumes unpacked before deletion — not of concurrency. ~2.4 logical bytes written per byte pulled, before RAID1 mirrors it. That ratio is the one a reduction would have to move, and the doc now says so instead of pointing at FETCH_WORKERS.

No code changed: the width-one branch was an experiment and was discarded.

Two arms on a quiet box, one per FETCH_WORKERS width, each with a 1 Hz sampler:
width 1 delivered 37% of width 3's throughput — against the 80% this section set
as the bar for switching — while writing slightly more per byte pulled and
peaking slightly higher. The width stays 3.

The write column is the finding that matters for draining a backlog: written
bytes per byte read barely move with the width (2.39 against 2.56), so the
platter cost is a property of the pipeline — payload written, extracted, and
unpacked — and not of concurrency. That ratio, not the fetch width, is what a
reduction would have to move.
@leonardoazeredo
leonardoazeredo merged commit 6418088 into main Sep 22, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant