This release is a pre-release and may not be stable for production use.
LMCache Rust Raw Block I/O
This crate provides the low-level raw device I/O layer for LMCache via Rust + PyO3. It is used by both:
- the legacy non-MP
RustRawBlockBackend - the MP
raw_blockL2 adapter (RawBlockL2Adapter) viaRawBlockCore
The Rust crate intentionally stays narrow: it owns the raw device handle and
exposes blocking pwrite_from_buffer / pread_into primitives. Slotting,
checkpointing, recovery, and MP task orchestration all live in Python.
I/O Engines
RawBlockDevice accepts io_engine:
posix(default): synchronous Linuxpread/pwrite.io_uring: direct Rust io_uring syscall path using the existing worker, batch, andwait_iouringmachinery.
use_iouring=True remains accepted for backward compatibility. If io_engine
is explicitly set, it wins over the legacy flag.
io_uring_cmd (NVMe Passthrough)
When io_engine="io_uring", you can optionally enable use_uring_cmd=True to
use NVMe passthrough via the io_uring command interface for direct device access.
io_uring_cmd notes:
- Requires NVMe character device node (
/dev/ngXnY) instead of the block device node (/dev/nvmeXnY) for direct NVMe passthrough command. - Requires
io_engine="io_uring"to be set. - Supports
max_data_transfer_sizeparameter to split large transfers into smaller chunks that fit within device limits. - Requires
alignmentto be a multiple of the NVMe namespace LBA size. An incompatible value is rejected when the device opens. - When
use_uring_cmd=True,use_odirectis ignored for NVMe namespace character devices. wait_iouringreturns a success bitmap and a sparse(operation_index, error_message)list after the worker releases the request's global and per-batch in-flight accounting.
MP Mode Integration
In MP mode, the stack looks like this:
StoreController / PrefetchController
|
v
RawBlockL2Adapter
|
v
RawBlockCore
|
v
lmcache_rust_raw_block_io
|
v
raw device / file
This split lets LMCache reuse the same on-device metadata and recovery model in
both non-MP and MP mode without duplicating the raw-block implementation. During
restart recovery, the shared RawBlockCore validates POSIX per-slot headers with
an internal pool of 8 reader threads. Both regular io_uring and io_uring_cmd
batch header reads up to iouring_queue_depth.
Zero-Copy Data Path
LMCache LocalCPUBackend (aligned pinned CPU tensor)
|
| Python buffer / memoryview (no payload memcpy)
v
RustRawBlockBackend (PyO3 boundary)
|
| direct pointer path when O_DIRECT constraints are met
| fallback: bounce only for unaligned tail/block
v
RawBlockDevice::pwrite_from_buffer / pread_into
|
v
Block device or file
How To Compare Performance
To compare local_disk vs rust_raw_block on a real NVMe device:
- Run
local_diskon an ext4 mount of the device. - Unmount it.
- Run
rust_raw_blockdirectly on the raw block device.
Use the benchmark commands in:
benchmarks/storage_backend_io/README.md
No fixed numbers are included here because results are host/device/workload dependent.
Limitations
- Linux only (
pread/pwrite, O_DIRECT semantics). alignmentandblock_alignmust be powers of two, such as 4096.- O_DIRECT requires aligned offsets and I/O lengths.
batched_writerejects requests whose offset ortotal_lenis not a multiple of the configured alignment; misaligned write buffers are copied through an aligned bounce buffer. write_uringandbatched_writetake a logical payload length alongside the physical transfer length (write_uring'stotal_lendefaults topayload_len;batched_write'spayload_lensdefaults tototal_lens). They read only within the source buffer bounds, never modify it, and always write the padding region as zeroes. A bounce buffer is used when the source is shorter than the transfer length or its padding tail is not already zero, so a caller buffer whose tail is zero keeps the fixed-buffer zero-copy path.
Build
cd rust/raw_block
pip install maturin
maturin develop --release
Minimal Usage
from lmcache_rust_raw_block_io import RawBlockDevice
dev = RawBlockDevice("/dev/nvme0n1", True, use_odirect=True, alignment=4096)
dev.pwrite_from_buffer(offset=0, data=b"hello", total_len=4096)
buf = bytearray(4096)
dev.pread_into(offset=0, out=buf, payload_len=5, total_len=4096)
io_uring:
dev = RawBlockDevice(
"/dev/nvme0n1",
True,
use_odirect=True,
alignment=4096,
io_engine="io_uring",
iouring_queue_depth=256,
)
io_uring with io_uring_cmd (NVMe passthrough):
dev = RawBlockDevice(
"/dev/ng0n1", # Note: NVMe character device node
True,
use_odirect=False,
alignment=4096,
io_engine="io_uring",
use_uring_cmd=True,
iouring_queue_depth=256,
max_data_transfer_size=131072, # Optional: split large transfers
)
FDP Notes
FDP status can be queried from Python when use_uring_cmd=True:
status = dev.fetch_fdp_status() # [(placement_id, ruh_id), ...]
For writes, omitting placement_id leaves the NVMe directive unset
(dtype=0, dspec=0). NVMe default writes use the RUH mapping associated with
Placement Identifier 0, so LMCache rejects explicit placement_id=0 at the
RawBlockCore layer. The low-level status query reads the controller-reported
16-bit NRUHSD count.
MP Adapter Example
To use the MP adapter from lmcache server, pass a raw_block L2 adapter
config:
lmcache server \
--l1-size-gb 10 \
--eviction-policy LRU \
--l1-align-bytes 4096 \
--l2-adapter '{
"type": "raw_block",
"device_path": "/dev/nvme0n1",
"slot_bytes": 1048576,
"block_align": 4096,
"header_bytes": 4096,
"meta_total_bytes": 268435456,
"use_odirect": true,
"io_engine": "io_uring",
"num_store_workers": 2,
"num_lookup_workers": 1,
"num_load_workers": 4
}'
Notes:
device_pathshould point to an unmounted raw block device or a dedicated file used only by LMCache.- For
use_uring_cmd=true,device_pathmust use the NVMe character device node (e.g.,/dev/ng0n1) instead of the block device node. block_alignmust be a power of two.slot_bytes,header_bytes, andmeta_total_bytesmust be multiples ofblock_align.- With
use_odirect=true, LMCache MP L1 alignment must be at leastblock_align. - Restart recovery uses the metadata checkpoint region on the same device.
- Raw-block slot reclamation is driven by the shared/global L2 eviction
controller or explicit
delete()calls. raw_blockremains the adapter type for all supported engines.
Metadata
Release files for lmcache-rust-raw-block-io 0.5.7rc3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 3.1 MB
Release files / lmcache_rust_raw_block_io-0.5.7rc3-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | lmcache_rust_raw_block_io-0.5.7rc3-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 387.4 kB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
526bbd5ba37af1af94128473ebbfb37489b3eee24b042228b0d5df4b293a337d
|
|
BLAKE2b-256 checksum How to use checksums |
4bc98db956f41e19e3a4ed1f70c57bbf59c21ce3ce7009fa91f4fe6cf5c2e1ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / lmcache_rust_raw_block_io-0.5.7rc3-cp313-cp313-manylinux_2_28_aarch64.whl
| Download URL | lmcache_rust_raw_block_io-0.5.7rc3-cp313-cp313-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 384.8 kB |
| Tags | CPython 3.13 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
4f296a63dce077ad13e92055d74fc95f0518ad167c917af42f7b88985afa0a72
|
|
BLAKE2b-256 checksum How to use checksums |
3f5b111990327a99071f841c34c7c11b7447cd3e47156cc6d7a53c62d069d285
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / lmcache_rust_raw_block_io-0.5.7rc3-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | lmcache_rust_raw_block_io-0.5.7rc3-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 388.2 kB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b005a6641fa994984050f4be17a8d0c8efcfc33894c5ef2e6b29b0b7c01d9b0d
|
|
BLAKE2b-256 checksum How to use checksums |
a03cbda9662bfa9493d083bea3ea16d04479749243d866ed74f6ee991cf6a3b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / lmcache_rust_raw_block_io-0.5.7rc3-cp312-cp312-manylinux_2_28_aarch64.whl
| Download URL | lmcache_rust_raw_block_io-0.5.7rc3-cp312-cp312-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 386.0 kB |
| Tags | CPython 3.12 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
ca2ffad0182f2bc305230e033227d4ed5e4577e5158eb238845eaa4eb04e3517
|
|
BLAKE2b-256 checksum How to use checksums |
506d125ecac656a776827d0a4d2d7406d98f5d2bb526cd53293277d1fedf9861
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / lmcache_rust_raw_block_io-0.5.7rc3-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | lmcache_rust_raw_block_io-0.5.7rc3-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 388.5 kB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
f4db175cb24f15f9fcf9f081c9a8431179258f1e9b8612df8f4f52839fb8258d
|
|
BLAKE2b-256 checksum How to use checksums |
b49ef83ddafcde3a75dd1d69ba65f57fe6c3840a9b27865041b2879f370c7ce8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / lmcache_rust_raw_block_io-0.5.7rc3-cp311-cp311-manylinux_2_28_aarch64.whl
| Download URL | lmcache_rust_raw_block_io-0.5.7rc3-cp311-cp311-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 385.0 kB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
be52ac1c890cb7c17071f106b8cbcde9272b0bb020d3622f7e3e93b4ea530ff1
|
|
BLAKE2b-256 checksum How to use checksums |
e9c45b8084b56c9385e9124591b1a459cc342845a5fc46640930d03e242b9ba5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / lmcache_rust_raw_block_io-0.5.7rc3-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | lmcache_rust_raw_block_io-0.5.7rc3-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 388.2 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
90847977795b7321e26de5dacf514ec5db73f8c400dd1d066008e0fb7d733e3b
|
|
BLAKE2b-256 checksum How to use checksums |
f18cd537be6bcf6d355f52e402123cd0e3ec90b356b6517b26410641c1921f3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / lmcache_rust_raw_block_io-0.5.7rc3-cp310-cp310-manylinux_2_28_aarch64.whl
| Download URL | lmcache_rust_raw_block_io-0.5.7rc3-cp310-cp310-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 385.4 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
45523251e06a2f297e0c84a96415645be9f09686ce8af29655772bfc0d12e82d
|
|
BLAKE2b-256 checksum How to use checksums |
2f55a38e99c78dfccedec601968ffebbd5d0866cb172445e1feb1f2d6ca96ff9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logSecurity for lmcache-rust-raw-block-io 0.5.7rc3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 8 files in this release have been uploaded with provenance metadata.
Attestation for lmcache_rust_raw_block_io-0.5.7rc3-cp313-cp313-manylinux_2_28_x86_64.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.