Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
e15f00b
feat: maru storage backend bring-up
youngrok-XCENA Mar 15, 2026
e29b248
chore: fix lint error
youngrok-XCENA Mar 15, 2026
c6d5dbf
refactor: update MaruBackend to use CxlMemoryAdapter facade API
youngrok-XCENA Mar 16, 2026
61e4b62
feat/maru backend (#5)
youngrok-XCENA Mar 17, 2026
7c021a6
feat(maru): use batch RPC APIs for MaruHandler operations (#11)
hyunyul-XCENA Mar 18, 2026
eb5afe0
feat: MaruBackend allocator fallback, ImportError, batch RPC (#7)
jooho-XCENA Mar 19, 2026
b5599d6
feat: MaruBackend pin/unpin and ref_count management (#10)
seohui-XCENA Mar 19, 2026
2be19a9
fix: rename MaruHandler pin/unpin RPC method calls (#12)
seohui-XCENA Mar 20, 2026
d6f47e7
tests: add maru backend test
youngrok-XCENA Mar 20, 2026
ebca1a9
fix: fix ruff fails
youngrok-XCENA Mar 20, 2026
5eceac6
refactor: move maru ImportError handling to __init__.py (#13)
jooho-XCENA Mar 20, 2026
c4f1053
fix: rename handler.pin_kv() to handler.pin() and document ref_count …
hyunyul-XCENA Mar 20, 2026
3b64cd4
docs: update maru.rst for new MaruBackend config
hyunyul-XCENA Mar 20, 2026
193b535
docs: add local_cpu: False to maru config example
hyunyul-XCENA Mar 20, 2026
ddc5460
Merge remote-tracking branch 'upstream/dev' into feat/maru-backend
youngrok-XCENA Mar 20, 2026
fd47482
fix: fix handler method name mismatch
youngrok-XCENA Mar 20, 2026
9507130
Merge branch 'feat/maru-backend' of github.com:xcena-dev/LMCache into…
youngrok-XCENA Mar 20, 2026
796f184
fix: skip put in MLA worker_id_as0 mode, fix test pin_kv→pin
youngrok-XCENA Mar 20, 2026
1425daf
fix: propagate async store failures to Future callers
youngrok-XCENA Mar 20, 2026
000134b
fix: pin memory_obj in async retrieve to balance cleanup unpin
seohui-XCENA Mar 20, 2026
ceedb9e
Merge branch 'feat/maru-backend' of github.com:xcena-dev/LMCache into…
youngrok-XCENA Mar 20, 2026
a73e8ba
fix: MaruBackend test failures, config cleanup, close() drain (#16)
jooho-XCENA Mar 20, 2026
f13580a
docs: tcp -> maru
hyunyul-XCENA Mar 20, 2026
f106204
Merge remote-tracking branch 'origin/feat/maru-connector' into feat/m…
hyunyul-XCENA Mar 20, 2026
cdb7133
tests: add store failure ref_count_down tests for MaruBackend
youngrok-XCENA Mar 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 12 additions & 16 deletions docs/source/kv_cache/storage_backends/maru.rst
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,13 @@ Deploy Model With Maru
.. code-block:: yaml

chunk_size: 256
local_cpu: True
max_local_cpu_size: 5
remote_url: "maru://localhost:5555"
remote_serde: "naive"
local_cpu: False
max_local_cpu_size: 0
save_unfull_chunk: True

extra_config:
maru_pool_size: "4G"
save_chunk_meta: False
# Maru backend
maru_path: "maru://localhost:5555"
maru_pool_size: 4

**3. Start vLLM with Maru**

Expand All @@ -75,11 +74,14 @@ Configuration
* - Parameter
- Default
- Description
* - ``remote_url``
* - ``maru_path``
- Required
- Maru server URL (format: ``maru://host:port``)
* - ``maru_pool_size``
- ``4.0``
- CXL memory pool size per instance in GB (e.g., ``4``, ``0.5``)

**Maru Parameters (via extra_config):**
**Advanced Parameters (via extra_config):**

.. list-table::
:header-rows: 1
Expand All @@ -88,17 +90,11 @@ Configuration
* - Parameter
- Default
- Description
* - ``maru_pool_size``
- ``"1G"``
- CXL memory pool size per instance (e.g., ``"4G"``, ``"500M"``)
* - ``maru_instance_id``
- auto UUID
- Unique client instance identifier
* - ``maru_operation_timeout``
- 10.0
- Per-operation timeout in seconds
* - ``maru_timeout_ms``
- 2000
- 5000
- ZMQ RPC socket timeout in milliseconds
* - ``maru_use_async_rpc``
- true
Expand Down
7 changes: 7 additions & 0 deletions lmcache/v1/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,13 @@
"default": None,
"env_converter": int,
},
# Maru CXL shared memory backend
"maru_path": {"type": Optional[str], "default": None, "env_converter": str},
"maru_pool_size": {
"type": float,
"default": 4.0,
"env_converter": float,
},
# Other configurations
# (Deprecated) The url of the actual remote lmcache instance for auditing.
# Please use extra_config['audit_actual_remote_url'] instead.
Expand Down
14 changes: 14 additions & 0 deletions lmcache/v1/storage_backend/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,20 @@ def CreateStorageBackends(
)
storage_backends[str(gds_backend)] = gds_backend

if config.maru_path is not None and "MaruBackend" not in _skip:
try:
# First Party
from lmcache.v1.storage_backend.maru_backend import MaruBackend
except ImportError as e:
raise ImportError(
"The 'maru' and 'maru_lmcache' packages are required "
"to use MaruBackend. Please install them according to "
"the Maru setup documentation."
) from e

maru_backend = MaruBackend(config, metadata, loop, dst_device)
storage_backends[str(maru_backend)] = maru_backend

if config.remote_url is not None and "RemoteBackend" not in _skip:
assert local_cpu_backend is not None, (
"Remote backend requires local CPU backend as a buffer."
Expand Down
45 changes: 0 additions & 45 deletions lmcache/v1/storage_backend/connector/maru_adapter.py

This file was deleted.

Loading
Loading