配置参考#
本页面记录了 LMCache 多进程服务器接受的每个 CLI 参数。参数按定义它们的配置模块进行分组。
MP 服务器#
源: lmcache/v1/multiprocess/config.py
参数 |
默认 |
描述 |
|---|---|---|
|
(未设置,默认 UUID v4) |
此 MP 服务器的稳定标识。用作协调器成员身份键,并投影到每条指标和每个 Span 的 OTel |
|
|
绑定 ZMQ 服务器的主机地址。 |
|
|
绑定 ZMQ 服务器的端口。 |
|
|
KV Cache 操作的块大小(以 token 为单位)。 |
|
|
工作线程的基本数量。为 GPU(亲和性)池和 CPU(正常)池设置默认值。可以通过 |
|
(继承 |
GPU 亲和性池(STORE/RETRIEVE)的工作线程。来自同一 vLLM 实例的请求始终分发到同一线程,从而消除 GPU 传输锁竞争。 |
|
(继承 |
普通 CPU 池(LOOKUP 等)的工作线程。 |
|
|
基于 token 的操作所使用的哈希算法。可选项: |
|
|
缓存引擎后端类型。 |
|
|
服务器加载的工作进程 → 服务器传输路径。 |
|
|
零个或多个路径,用于运行时插件脚本或目录,以便与服务器一起启动。插件由 |
|
|
通过 |
|
|
允许在 HTTP |
|
(未设置) |
非 GPU KV 传输的 SHM 段名称(仅在加载非 GPU 路径时使用,即 |
|
|
工作线程发送至少一个心跳 PING 后进入静默状态的最长容忍时间(秒),超时后将回收其 KV Cache 注册,并释放泄漏的 GPU 上下文和 CUDA IPC 句柄。 |
|
|
针对已注册但从未发送 PING 的工作线程(仍在预热或在首次请求前已崩溃)的静默容忍时间(秒)。必须大于或等于 |
|
|
CacheBlend ( |
查找哈希日志记录#
源: lmcache/v1/mp_observability/subscribers/logging/lookup_hash.py
启用时,服务器将在 EventBus 上以 MP_LOOKUP 事件的形式发布 lookup() 期间计算的块哈希。LookupHashLoggingSubscriber 会将这些事件写入滚动 JSONL 文件以供离线分析。默认禁用。这些参数属于可观察性配置组。
参数 |
默认 |
描述 |
|---|---|---|
|
|
写入查找哈希 JSONL 文件的目录。空字符串将禁用日志记录。 |
|
|
滚动到新日志文件前的时间间隔(秒)。 |
|
|
即使时间间隔未到,触发滚动的最大文件大小(字节)。 |
|
|
保留的最大日志文件数量。当超过此限制时,最旧的文件将被删除。 |
HTTP 前端#
源: lmcache/v1/multiprocess/config.py
HTTP 前端在运行 lmcache server 时包含在内。
参数 |
默认 |
描述 |
|---|---|---|
|
|
绑定 HTTP (FastAPI/uvicorn) 服务器的主机。 |
|
|
绑定 HTTP 服务器的端口。 |
L1 内存管理器#
来源: lmcache/v1/distributed/config.py
参数 |
默认 |
描述 |
|---|---|---|
|
必需 |
L1 层的大小(以 GB 为单位)。默认情况下,设置固定 DRAM 的 L1 大小,或者在设置了 |
|
|
启用或禁用 L1 内存的延迟分配。传递 |
|
|
使用延迟分配时的初始分配大小(GB)。 |
|
|
对齐大小(以字节为单位,默认 4 KB)。 |
|
(未设置) |
Optional |
GDS L1 层#
来源: lmcache/v1/distributed/config.py
可选功能。设置 --gds-l1-path 可将 L1 存储介质从固定 DRAM 切换为通过 GPUDirect Storage(cuFile DMA)访问的 NVMe slab 文件。此时 CPU 固定 DRAM 层将被禁用,--l1-size-gb 用于设置 slab 大小。启用此选项后,请禁用字节数组 L2 适配器(GDS 层不为其提供可注册的 L1 内存缓冲区)。
参数 |
默认 |
描述 |
|---|---|---|
|
未设置 |
GDS L1 slab 的 NVMe 目录。设置此项将启用 GDS L1 层;每个进程共享一个位于 |
|
|
使用 |
L1 管理器 TTLs#
来源: lmcache/v1/distributed/config.py
参数 |
默认 |
描述 |
|---|---|---|
|
|
每个对象的写锁的生存时间(秒)。 |
|
|
每个对象的读取锁的生存时间(秒)。 |
逐出策略#
来源: lmcache/v1/distributed/config.py
参数 |
默认 |
描述 |
|---|---|---|
|
必需 |
逐出策略。可选项: |
|
|
触发逐出的内存使用比例 (0.0--1.0)。 |
|
|
触发时逐出的已分配内存比例 (0.0--1.0)。 |
L2 策略#
来源: lmcache/v1/distributed/config.py
参数 |
默认 |
描述 |
|---|---|---|
|
|
L2 存储策略。决定每个键被写入哪些适配器,以及 L2 存储完成后是否从 L1 删除该键。 |
|
|
L2 预取策略。当多个适配器均持有某个键时,决定由哪个适配器加载该键。 |
|
|
最大并发预取(L2 加载)请求数量。限制 PrefetchController 同时发起的在途加载数,防止 L1 内存压力过大。 |
|
|
定期事件通知器心跳的间隔(毫秒)。一个原生 C++ 后台线程按此间隔向所有已注册的文件描述符写入数据,以唤醒缺少原生异步完成回调的 L2 适配器的控制器轮询循环。 |
L2 适配器#
源: lmcache/v1/distributed/l2_adapters/config.py
L2 适配器通过可重复的 --l2-adapter <JSON> 参数进行配置。每个 JSON 对象必须包含一个 "type" 字段,用于选择适配器类型。--l2-adapter 参数的顺序决定了适配器的顺序(级联)。
注册的适配器类型:nixl_store, nixl_store_dynamic, fs, fs_native, mock, mooncake_store, aerospike, s3, resp, plugin, native_plugin, raw_block, dax。
每种适配器类型的必填和可选字段及各后端示例,均记录在 Secondary KV Storage 下各自的页面中,包括此处未详细说明的适配器(fs_native、raw_block、dax、mooncake_store、hfbucket、resp)。
aerospike -- Aerospike 原生连接器#
原生 C++ Aerospike L2 适配器(可选,需使用 BUILD_AEROSPIKE=1 构建)。构建前提条件和完整字段列表请参见 二级 KV 存储。
字段:
hosts(必需): 种子主机host:port[,host:port...]。namespace(可选,默认 ``"lmcache"``): Aerospike 命名空间。set_name/set(可选,默认 ``"kv_chunks"``): Aerospike 集。num_workers(可选,默认 ``8``): C++ I/O 工作线程。read_timeout_ms/write_timeout_ms(可选): 客户端超时。default_ttl_seconds(可选,默认 ``86400``): 记录的 TTL (0= 命名空间默认)。target_segment_bytes/max_record_bytes(可选,默认 ``0``): 分片目标和记录容量覆盖 (0= 自动发现)。username/password(可选): 企业版认证。max_capacity_gb(可选,默认 ``0``): 用于逐出跟踪的 L2 容量上限(0表示禁用跟踪)。
示例:
--l2-adapter '{"type": "aerospike", "hosts": "127.0.0.1:3000", "namespace": "lmcache", "set_name": "kv_chunks", "num_workers": 8}'
多个适配器(级联)#
多次传递 --l2-adapter。适配器按给定顺序使用:
--l2-adapter '{"type": "nixl_store", "backend": "POSIX", "backend_params": {"file_path": "/data/ssd/l2", "use_direct_io": "false"}, "pool_size": 64}' \
--l2-adapter '{"type": "nixl_store", "backend": "GDS", "backend_params": {"file_path": "/data/nvme/l2", "use_direct_io": "true"}, "pool_size": 128}'
可观察性#
源: lmcache/v1/mp_observability/config.py
三种模式(指标、日志记录、链路追踪)的完整说明,请参见 可观察性。
参数 |
默认 |
描述 |
|---|---|---|
|
关闭 |
总开关:完全禁用 EventBus。 |
|
关闭 |
跳过指标订阅者(不暴露 Prometheus 端点)。 |
|
关闭 |
跳过日志订阅者。 |
|
关闭 |
注册链路追踪订阅者。需要 |
|
|
事件总线队列中最大事件数,超过后将进行尾部丢弃。 |
|
(无) |
用于导出指标和链路追踪数据的 OTLP gRPC 端点。 |
|
|
Prometheus |
vLLM 客户端配置#
在 vLLM 端,通过 kv_connector_extra_config 参数指定 LMCache 服务器的主机和端口:
vllm serve Qwen/Qwen3-14B \
--kv-transfer-config \
'{"kv_connector":"LMCacheMPConnector", "kv_role":"kv_both", "kv_connector_extra_config": {"lmcache.mp.host": "127.0.0.1", "lmcache.mp.port": 6000}}'
LMCacheMPConnector 从 kv_connector_extra_config 中读取以下键:
连接器 extra_config 键#
所有连接器级别的选项都通过 kv_connector_extra_config 传递,并使用 lmcache.mp. 前缀。
键 |
默认 |
描述 |
|---|---|---|
|
|
LMCache MP 服务器的主机(带有 ZMQ 传输前缀)。 |
|
|
LMCache MP 服务器的端口。必须与服务器的 |
|
|
阻塞消息队列请求的超时时间(秒),包括初始块大小查询和 KV Cache 注册/注销。如果服务器在此时间窗口内未响应,连接器将在启动时引发 |
|
|
连接器向服务器发送周期性心跳 PING 的时间间隔(秒)。 |
|
|
工作进程 → 服务器传输上下文的路由模式。可选值: |
环境变量#
变量 |
描述 |
|---|---|
|
LMCache 的日志级别( |
|
设置为固定值以实现跨进程的可重复哈希(在使用 |
完整示例#
lmcache server \
--host 0.0.0.0 \
--port 6555 \
--chunk-size 512 \
--max-workers 4 \
--max-gpu-workers 2 \
--hash-algorithm blake3 \
--engine-type default \
--lookup-hash-log-dir /data/lmcache/lookup_hashes \
--lookup-hash-log-rotation-interval 21600 \
--lookup-hash-log-rotation-max-size 104857600 \
--lookup-hash-log-max-files 100 \
--l1-size-gb 100 \
--l1-use-lazy \
--l1-init-size-gb 20 \
--l1-align-bytes 4096 \
--l1-write-ttl-seconds 600 \
--l1-read-ttl-seconds 300 \
--eviction-policy noop \
--l2-store-policy skip_l1 \
--eviction-trigger-watermark 0.9 \
--eviction-ratio 0.1 \
--l2-prefetch-policy default \
--l2-prefetch-max-in-flight 8 \
--periodic-notifier-interval-ms 5 \
--l2-adapter '{"type": "nixl_store", "backend": "POSIX", "backend_params": {"file_path": "/data/lmcache/l2", "use_direct_io": "false"}, "pool_size": 64}' \
--prometheus-port 9090 \
--metrics-sample-rate 0.01 \
--enable-tracing \
--otlp-endpoint http://localhost:4317