Experiment benchmarks catalog metadata findings - kmosoti/FabricO11y GitHub Wiki
Historical report imported 2026-10-10 from
docs/experiments/benchmarks/catalog-metadata-findings.md. Original SHA-256:187a3a57efeed8551f63ebdfadaa75d029640010e8af2264d23a146e6ef740b3. Measurements and outcomes retain their stated revisions. Links and local environment labels are normalized;$FABRIC_DATAis the mounted experiment drive. See evidence policy.
CR3 metadata ownership findings
Status: isolated microbenchmark completed; catalog adoption pending.
Protocol (local checkout reference docs/experiments/benchmarks/catalog-metadata-protocol.md; not present at origin/main), revision
71cba756a57eb5d91d1163270c2a3cc58850ba9f; registered protocol SHA256
1aa7aed1532be128a940ded44d1825fe7628ae5d93473e95fe0411bf1c08395c.
Coordinator command/receipt (local evidence omitted from stage)
records exit 0, 14.017 seconds, 179.60 MiB whole-job cgroup peak, zero swap
and no OOM events. This peak includes build/driver work, not Manifest heap.
Plain timing and allocation observations
Three fresh alternating clone/Arc pairs ran for each reader count, with 4096 total acquisitions per trial (262144 manifests). Both paths consumed identical immutable content from the same Arc-backed map; only view ownership changed. Ratios below are Arc/clone and exclude counted timing.
| Readers | Pair 1 wall ratio | Pair 2 wall ratio | Pair 3 wall ratio |
|---|---|---|---|
| 1 | 0.197978 | 0.196268 | 0.198215 |
| 4 | 0.187192 | 0.188160 | 0.188163 |
Every plain pair meets the preregistered 10% timing discriminator. H1 is supported for acquisition of this synthetic metadata: roughly 80–81% lower wall cost. The fixed total work prevents treating four readers as four times the demand.
Counted allocation results were identical across all pairs/reader counts: 715653768 requested bytes and 9965571 allocation calls for cloning versus 2097800 bytes and 4099 calls for handles. Arc/clone ratios are 0.00293131 for requested bytes and 0.000411316 for calls. These include coordination allocations, and are cumulative allocator requests, not disk bytes or RSS.
| Readers | Clone incremental peak bytes | Arc incremental peak bytes |
|---|---|---|
| 1 | 174864 | 656 |
| 4 | 699024 | 2192 |
Peak increments subtract each trial's live-byte baseline. Counted wall time is diagnostic only: allocator atomics alter concurrent execution.
Retention trade-off and evidence audit
The separate paused-reader model retained eight generations/512 Manifest handles, representing 847329 serialized logical bytes. Counted live requested bytes rose by 1433560 (1.367 MiB), including the model's tracking structures. This retained memory is the cost of keeping old views alive; it is not the acquisition peak. After current state and paused views were dropped, every tracked Weak handle failed to upgrade. Remaining live increment was 64 bytes for the retained byte ledger, rather than surviving Manifest objects. An old logical snapshot expired despite live Arc handles: object lifetime does not authorize retained-history access.
Read-only audit inspected all 24 native outputs and trial records: all exits were 0, exact output SHA256s matched the retained trial map, and fixture hash/work counts agreed. Each output records exact Manifest equality, five rejected field mutations and three lifecycle controls; every driver trial rejected its five injected malformed receipts. Raw trials (local evidence omitted from stage) and independent coordinator summary (local evidence omitted from stage) retain the per-pair evidence. No new workload ran for this findings audit.
Probe cleanup (local evidence omitted from stage) removed 3825641 bytes of owned scratch; binary cleanup (local evidence omitted from stage) removed staging after archiving both frozen binaries. Outer sampled scratch peaked at 7651185 bytes and was removed. Shared build caches remain retained.
Limits and next admission
No directory discovery, locking, IO, query semantics, real publication/eviction
race or filesystem lease was measured. Paused readers/cancellation are modeled
by retained vectors and drops. Typed fixture equality and mutation controls do
not establish telemetry-oracle equivalence. Only one map size/content was tested;
three pairs give no service tail-latency, CPU-efficiency or operating-envelope claim.
The measurements nominate immutable metadata handles for CQ1 investigation;
they do not establish a production speedup or retention bound. CQ1 lifecycle
equivalence, CQ2 eager/lazy maintenance and Q3 source/output attribution remain
pending under the query packet (local checkout reference docs/experiments/benchmarks/catalog-labs-query.md; not present at origin/main). Scan remains the default.