Skip to content

Docs/io uring async#2

Open
982945902 wants to merge 2 commits into
xLLM-AI:mainfrom
982945902:docs/io-uring-async
Open

Docs/io uring async#2
982945902 wants to merge 2 commits into
xLLM-AI:mainfrom
982945902:docs/io-uring-async

Conversation

@982945902

Copy link
Copy Markdown

No description provided.

ParaKV audit and others added 2 commits July 20, 2026 19:26
Design doc for migrating the SSD data path from synchronous pread/pwrite
(+ per-record fsync WAL) to an io_uring-based async engine for the LLM
KVCache workload. Covers: three io_uring invariants, an IoUringEngine
pinned to a brpc user_pthread (ring-per-io-thread, mixed read/write),
the read path (batched SubmitReads + Index::BatchGet), the two write
paths (Segment data->bitmap ordered via IO_LINK, WAL group commit),
relaxed cache-semantics durability, O_DIRECT/4K alignment as a later
phase, and a P1-P4 rollout.

Co-Authored-By: Claude <noreply@anthropic.com>
Rewrite the write-path section: instead of two independent paths, a single
KVCache write organizes slot data + bitmap + WAL into one io_uring submission
unit chained data -> bitmap -> WAL(commit record) -> fsync via IO_LINK.
WAL lands last (it holds the index pointer, not data, so data must be durable
first). Adds full crash-recovery semantics (A/B/C crash points, orphan-slot
handling strategies, the index->live-slot invariant) and folds durability
into the merged model.

Co-Authored-By: Claude <noreply@anthropic.com>
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