Skip to content

V1 A: CPU cache contract; hot tier does not use erasure coding - #2

Merged
loverustfs merged 2 commits into
mainfrom
feat/v1a-core
Oct 15, 2026
Merged

loverustfs merged 2 commits into
mainfrom
feat/v1a-core

Conversation

@loverustfs

@loverustfs loverustfs commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Summary

V1 milestone A of the G3.5 shared KV tier. RustFS remains the colder G4 backend and is not on this path. Nothing here claims DPU, RDMA, or CUDA acceleration.

GPUCache does not do erasure coding and does not keep durability replicas. A lost or failed hot block is a clean miss: the engine recomputes and may repopulate the cache. Durability for cold data is RustFS G4's job. An extra copy of a hot shared prefix may be considered later as a latency hint; that is not erasure coding, not a durability promise, and not in this tree. Recorded in docs/adr/0002-no-erasure-coding.md. The README roadmap no longer lists an EC milestone. DOCA EC and SPDK RAID are not GPUCache components.

  • Cargo workspace with gpucache-core-types, gpucache-protocol, and gpucache-storage (MemoryStore). No GPU or DPU dependencies; unsafe is forbidden.
  • Versioned CacheIdentity, length-delimited physical and logical keys, and the lifecycle ABSENT -> RESERVED -> WRITING -> COMMITTED -> EVICTING -> ABSENT, with quarantine when a registered region's completion is unknown.
  • Batch Lookup, Reserve/Put, Commit, Get, Release/Cancel, and Invalidate, each carrying request_id, epoch, deadline, and where relevant generation, length, and checksum. Only a committed, compatible block is a hit. Quotas bound object size, in-flight work, registrations, and retained bytes.
  • Unit, property, timeout, and cancel tests, plus single-process and cross-process import of a synthetic block (kv-block-xfer).
  • CI builds and tests on x86_64 and aarch64 (ARM runner and qemu-user). An aarch64 result is not a BlueField test.
  • Docs: README, AGENTS.md, COMPATIBILITY.md, ADR 0001 (integration route pending), ADR 0002 (no erasure coding, accepted), protocol/architecture/security/operations.

The native vLLM KV connector vs LMCache choice is not made. A real engine export/import needs a GPU and is NOT_RUN_HARDWARE.

Test matrix

Check Result
cargo test --workspace --all-targets on x86_64 (Rust 1.99.0, MSRV 1.85) PASS
Same command, aarch64-unknown-linux-gnu under qemu-user PASS (prior run on this branch's code; this follow-up commit is docs only)
cargo clippy --workspace --all-targets -- -D warnings PASS
cargo fmt --all -- --check PASS
GitHub ubuntu-24.04-arm job NOT_RUN locally; defined in CI
Real vLLM KV export/import NOT_RUN_HARDWARE
CUDA / GPU driver / BlueField / DOCA / RDMA NOT_RUN_HARDWARE
RustFS endpoint NOT_RUN_HARDWARE
Model or DOCA license review NOT_RUN_LICENSE
Paid GPU or DPU NOT_RUN_BUDGET

One-command repro: cargo test --workspace --all-targets

Not in this PR

V1 B (TCP, file/NVMe, RustFS smoke), V1 C fault matrix and paired baselines, V2 RDMA, V3 DPU. No erasure coding, no durability replicas, no website change, and no release.

Open in Web Open in Cursor 

cursoragent and others added 2 commits October 15, 2026 01:41
Introduce core-types, protocol, and MemoryStore with a versioned
identity, length-delimited keys, and a fenced block lifecycle.
Tests cover hits, quotas, timeout, and cancel on x86_64 and aarch64
qemu-user. Real vLLM and DPU paths stay out of the tree.

Co-authored-by: RustFS <hello@rustfs.com>
A lost or failed G3.5 block is a clean miss, then recompute and repopulate. Cold durability stays with RustFS G4. No parity and no durability replicas.

Co-authored-by: RustFS <hello@rustfs.com>
@cursor cursor Bot changed the title V1 A: CPU cache contract, protocol, and MemoryStore V1 A: CPU cache contract; hot tier does not use erasure coding Oct 15, 2026
@loverustfs
loverustfs marked this pull request as ready for review October 15, 2026 02:25
@loverustfs
loverustfs merged commit d0abdb6 into main Oct 15, 2026
4 of 6 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.

2 participants