Implementation:LMCache LMCache Distributed Config
| Knowledge Sources | |
|---|---|
| Domains | Configuration, Distributed Storage |
| Last Updated | 2026-02-09 00:00 GMT |
Overview
Defines the hierarchical configuration dataclasses and CLI argument parsing for the LMCache distributed storage manager.
Description
This module provides a set of nested dataclasses that configure the distributed storage manager. L1MemoryManagerConfig specifies the L1 memory pool size, lazy allocation strategy, initial allocation size, and alignment. L1ManagerConfig wraps the memory configuration and adds TTL settings for read and write locks. EvictionConfig defines the eviction policy (currently only LRU), trigger watermark, and eviction ratio. StorageManagerConfig is the top-level config combining L1 manager and eviction settings. The module also provides argparse integration via add_storage_manager_args (for composing with other parsers), get_arg_parser (standalone parser), and parse_args_to_config / parse_args for converting CLI arguments into a StorageManagerConfig instance.
Usage
Use this module when launching the distributed storage manager process or integrating storage manager configuration into a larger application. Create configs programmatically via the dataclasses or parse them from command-line arguments using the provided argument parser utilities.
Code Reference
Source Location
- Repository: LMCache
- File: lmcache/v1/distributed/config.py
- Lines: 1-249
Signature
@dataclass
class L1MemoryManagerConfig:
size_in_bytes: int
use_lazy: bool
init_size_in_bytes: int = 20 << 30 # 20GB
align_bytes: int = 0x1000 # 4KB
@dataclass
class L1ManagerConfig:
memory_config: L1MemoryManagerConfig
write_ttl_seconds: int = 600
read_ttl_seconds: int = 300
@dataclass
class EvictionConfig:
eviction_policy: Literal["LRU"]
trigger_watermark: float = 0.8
eviction_ratio: float = 0.2
@dataclass
class StorageManagerConfig:
l1_manager_config: L1ManagerConfig
eviction_config: EvictionConfig
def add_storage_manager_args(parser: argparse.ArgumentParser) -> argparse.ArgumentParser: ...
def get_arg_parser() -> argparse.ArgumentParser: ...
def parse_args_to_config(args: argparse.Namespace) -> StorageManagerConfig: ...
def parse_args(args: list[str] | None = None) -> StorageManagerConfig: ...
Import
from lmcache.v1.distributed.config import (
L1MemoryManagerConfig,
L1ManagerConfig,
EvictionConfig,
StorageManagerConfig,
add_storage_manager_args,
parse_args,
)
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| --l1-size-gb | float | Yes | Size of L1 memory in GB |
| --l1-use-lazy | flag | No | Use lazy loading for L1 memory (default: True) |
| --l1-init-size-gb | int | No | Initial allocation size in GB for lazy mode (default: 20) |
| --l1-align-bytes | int | No | Alignment size in bytes (default: 4096) |
| --l1-write-ttl-seconds | int | No | Write lock TTL in seconds (default: 600) |
| --l1-read-ttl-seconds | int | No | Read lock TTL in seconds (default: 300) |
| --eviction-policy | str | Yes | Eviction policy (choices: "LRU") |
| --eviction-trigger-watermark | float | No | Memory usage watermark to trigger eviction, 0.0-1.0 (default: 0.8) |
| --eviction-ratio | float | No | Fraction of memory to evict when triggered, 0.0-1.0 (default: 0.2) |
Outputs
| Name | Type | Description |
|---|---|---|
| StorageManagerConfig | StorageManagerConfig | Complete hierarchical configuration for the distributed storage manager |
Usage Examples
# Parse from command-line arguments
from lmcache.v1.distributed.config import parse_args
config = parse_args(["--l1-size-gb", "64", "--eviction-policy", "LRU"])
# Compose with another argument parser
from lmcache.v1.distributed.config import add_storage_manager_args, parse_args_to_config
import argparse
parser = argparse.ArgumentParser(description="My Application")
parser.add_argument("--my-flag", action="store_true")
add_storage_manager_args(parser)
args = parser.parse_args()
storage_config = parse_args_to_config(args)
# Programmatic construction
from lmcache.v1.distributed.config import (
L1MemoryManagerConfig, L1ManagerConfig, EvictionConfig, StorageManagerConfig
)
mem_cfg = L1MemoryManagerConfig(size_in_bytes=64 * (1 << 30), use_lazy=True)
l1_cfg = L1ManagerConfig(memory_config=mem_cfg)
evict_cfg = EvictionConfig(eviction_policy="LRU")
config = StorageManagerConfig(l1_manager_config=l1_cfg, eviction_config=evict_cfg)