Skip to content

Promoted: minimize Workspace overhead against tier-500 tiny-churn benchmarks #130

Description

@yifanxuaaa

Promoted migration: existing tiny-churn evaluation

Latest owner direction supersedes the earlier 25k/two-second milestone: target close performance to the existing tiny- benchmarks, reject quadratic scaling, and defer the 25,000-file and million-file cases.* #130 remains promoted into the active migration; it does not wait for #124/#125 closure.

The current implementation plan governs the selected architecture, iteration order, comparison and acceptance. This is reviewed planning, not implemented performance. The former 25k case registration and two-second gate are deferred. Million-file qualification remains DEFERRED/OPEN wherever the broader migration requires it; this does not waive or satisfy that obligation.

Successor execution prompt

Use the published execution handoff to implement and verify the full current P130 rollout. It requires actual package-completion comments, five tier-500 cases then all 20 when stable, retained failure/pass validity, reviewed main delivery and verified terminal #130 closure. No stop at a replan, revision, one green case or subagent completion while ready authorized work remains. Genuine external blocks remain explicit and never become PASS.

The owner also prohibits patching, forking, vendoring, replacing or copying/reimplementing third-party libraries/imported implementations, and changing third-party dependency/import declarations to bypass an API limitation. Use existing documented APIs and first-party code; no dependency forks/overrides/new packages/version changes. See the handoff's precise boundary and external-block handling.

Quick iteration: exactly five tier-500 cases

Case Actual workload
tiny-create-500-mixed-v4 500 created tiny files with the registered mixed background
tiny-stat-500-mixed-v4 500 stat targets with the registered mixed background
tiny-unlink-500-mixed-v4 500 removed tiny files with the registered mixed background
tiny-bulk-create-500-mixed-v3 5,000 created files / 500 MiB plus registered witness
tiny-bulk-delete-500-mixed-v3 5,000 removed files / 500 MiB plus registered witness

The bulk 500 tier does not mean 500 files. Preserve fixtures, byte distributions, metadata normalization, root sync, worker counts, seeds, timers and independent verification. Do not substitute smaller cases, one-byte workloads, SDK bulk operations or the legacy authority route.

Establish results for these five, then iterate on the failing case and genuinely affected regressions only. Reuse valid passes across unrelated edits. When stable, qualify all 20 existing tiny_file_churn cases; the five-case quick screen is not full-family or full #125 completion. All 20 are outside the 36 #122 exclusions.

What “close performance” means

Use a compatible v0.1.5 control and the existing #118 ordinary paired regression screen, prospectively frozen for this evaluation:

  • Existing n3 fresh alternating pairs, retaining its arm/seed/custody rules.
  • A material wall regression requires median paired slowdown > max(15% of control median, 3 ms) AND at least two of three pairs slower.
  • CPU analogue: max(15% of control median, 1 ms).
  • Stronger applicable criteria prevail, including registered strict <1 s tier 100 bulk create/delete and tiny-create-100 criteria where applicable. Correctness/resource/cleanup/deadline failures cannot be excused by a relative screen.

Apply the screen to each registered whole-workflow metric; receipt operations=1 must not be divided by 500/5,000 files to dilute the noise floor. Preserve the inherited pure_call_sum, and report Begin/Exec/Commit/visibility/End and orchestration wall separately. No universal two-second target or new per-file threshold.

Historical tiny-create-500 measured 242.659707 ms for 500 files / 824,450 B on a 5,000-file/ 500 MiB background; bulk-create-500 measured 5,732.993668 ms for 5,000 files/ 500 MiB, including large files. Those are context until a matched control is established. If compatible public execution cannot be established, comparison is unavailable/blocked, not “close” from unlike routes. Preserve historical WARN/FAIL/waiver/reuse labels.

Explicit issue ownership

Issue Owns
#130 Implement overhead reduction: local payload reclamation, bounded Index preparation, measured compact storage/correspondence/lifecycle/transport changes, and their five/20-case tiny-churn comparisons and affected correctness checks
#124 Complete production macOS-host/Docker FUSE and SDK wiring, V1 snapshot semantics, Commit integration, non-Commit consumers and obsolete-coupling removal
#125 Later full included benchmark campaign, final matrix/custody/report and its terminal requirements

Promoting #130 means implementing its own changes now alongside #124. It does not rename #124's unfinished integration or make complete #124 success a prerequisite for the first optimization. Authentic public timing depends on the verified new route; independent allocator/Index/range/correspondence work can start immediately with owned inputs. The interrupted four-file #124 patch remains separate.

First #130 implementation slice: reproduce and repair quadratic arena reclamation, then remove redundant Index/range preparation. Comparator/instrumentation work supports these code changes; it does not replace them.

Architecture review and #130 implementation order

Two subagents reviewed existing tiny-churn receipts/registry and actual write/Index/payload/transport source, then reassessed the plan for this revised scope. The coordinating review checked governing contracts.

  1. P130.1 — Promoted: minimize Workspace overhead against tier-500 tiny-churn benchmarks #130 comparator and cost instrumentation. Freeze the five tier-500 comparisons and instrument the actual overhead. Consume v0.1.6: implement Snapshot-Isolated Workspace with non-pausing Commit #124's verified production route for public timing. If that route is pending, only dependent public measurements wait; proceed with independent Promoted: minimize Workspace overhead against tier-500 tiny-churn benchmarks #130 component implementation/checks. Record exact release source/binary/image/fixture identity and separate transport/host/Index costs.
  2. P130.2 — Repair quadratic reclamation and redundant preparation. Current release-triggered whole-arena evacuation can move N+(N−1)+… live blocks across small deletions with completed maintenance: quadratic cumulative work. Replace it with indexed free-space reuse/local tail-block reclamation and an amortized proof. Prepare bounded final operation records instead of repeatedly constructing/retiring intermediate Index roots.
  3. P130.3 — Select the next measured storage cost. Use denser existing Index pages, Empty/Single/Indexed ranges, packed tiny allocation in existing arenas or metadata-only singleton correspondence only where the case measurements justify it. The full compact-storage bundle is not a prerequisite for the first useful result.
  4. P130.4 — Remove measured remaining latency. Lazy unused resources, bounded immutable-page cache or a correct transport change are conditional. Serialized host requests are an independent cost; preserve host ownership before acknowledgment and exact replay. No mandatory RAM-first pager or replacement backend.
  5. P130.5 — Qualify Promoted: minimize Workspace overhead against tier-500 tiny-churn benchmarks #130 changes and hand off. Five quick cases first, then all 20 when stable, plus genuinely affected correctness/resource/cleanup checks. This verifies the delivered overhead implementation. v0.1.6: implement Snapshot-Isolated Workspace with non-pausing Commit #124 still owns unfinished V1/production/consumer migration; v0.1.6: run full existing benchmarks excluding #122 and report actual numbers #125 owns the later full matrix. Link required cross-issue evidence without relabeling that implementation as Promoted: minimize Workspace overhead against tier-500 tiny-churn benchmarks #130.

No quadratic scaling is acceptable, including deferred maintenance. Linear necessary input/output processing is allowed; prefer logarithmic point/index operations and O(1) snapshot ownership. D logarithmic updates may total O(D log N); disclose those factors. Fixed-size maintenance calls are not proof of bounded cumulative work.

Required guards

Keep the single host authority, immutable published metadata, exact leased-source installation, independent file/snapshot ownership, bounded journals/admission and existing canonical construction/CAS/authentication/FULL-DELTA/CDC/extents/packing/compression/staging/publication machinery. A file-only reader must not retain unrelated payload tokens through a shared leaf. Packed physical slack remains bounded and charged; preserve append/Origin/promotion, fsync, relocation, rollback and release headroom.

V1 dirty-writable-mapping visibility is still open. No host-root-only full-surface claim, implicit user fsync, removed mmap, third-party patch, global freeze/drain, remount or checkpoint reset is authorized. Live operations/handles must survive Commit and retained stages; C1/C2 and lost Created/UpToDate resolution stay exact. Preserve original failures and the interrupted unverified Step 5 patch rather than claiming it passed.

Acceptance and execution discipline

  • Verify/freeze the five exact quick cases, comparator, existing criteria and actual new production dispatch.
  • Repair quadratic cumulative reclamation with focused source-bound proof and affected regressions.
  • Remove measured redundant work; select and version additional representation changes only for demonstrated costs.
  • Achieve close per-case performance under the existing screen and all stronger applicable criteria; no required failure hidden by a family average or inner Commit time.
  • Qualify all 20 inherited tiny-churn cases when stable, preserving exact fixtures, seeds/repetitions, independent proofs and cleanup.
  • Publish real time, CPU/RSS/cgroup, metadata/payload/index/retained/scratch/slack storage and I/O. Unavailable is not zero; earlier 105–245 MiB estimates are not accepted per-call allowances.
  • Preserve affected natural-overlap, C1/C2, large-file and supported FUSE/SDK checks. Keep existing 100k-base D=0/1/10 and 100k-changed accounting obligations explicit; neither is a quick-iteration prerequisite or a substitute for deferred million-file qualification.
  • Retain 25k/two-second and million-file cases as deferred, neither passed nor waived. Do not register/run them in this evaluation.
  • Publish exact source, retained failures/fixes and final applicable evidence before claiming completion. Broader v0.1.6: implement Snapshot-Isolated Workspace with non-pausing Commit #124/v0.1.6: run full existing benchmarks excluding #122 and report actual numbers #125 closure remains subject to their still-open terminal obligations.

Post a substantive source/evidence/failures/reused-passes/next-action comment after each actual P130 completion; mirror production/correctness to #124 and benchmark-facing changes to #125. Original seven-phase completion comments remain required. During implementation, bounded subagents iterate on concrete checks and integrate results; no stop at a revision or one green test while ready authorized work remains. Reuse valid passes and existing facilities. Do not rerun the whole five- or 20-case set after unrelated fixes.

Use the existing runner and measurement lock. macOS owns Store/SDK/coordinator/construction/spool; Linux Docker owns daemon/FUSE/workload under existing 2 CPU / 2 GiB / no-swap / 256 PID limits. No concurrent resource-sensitive work. All 36 #122 cases (33 regular + 3 extended) remain excluded; no shared/v016_matrix.py campaign, release/tag, website deployment or #123 closure.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    deferredExplicitly postponed; retain the reason and revisit condition in the issue.enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions