[GH-ISSUE #1195] [Usage]: sglang使用mooncake时开启root_fs_dir, sglang内存飙升 #405

Closed
opened 2026-10-29 21:14:01 +00:00 by bsakaguchi · 36 comments
Owner

Originally created by @dcosmos on GitHub (Dec 11, 2025).
Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/1195

Describe your usage question

使用mooncake当作sglang hicache的L3,我给mooncake master开启了root_fs_dir,root_fs_dir是挂载的一个DFS。
mooncake_master \ --enable_http_metadata_server=true \ --http_metadata_server_host=0.0.0.0 \ --http_metadata_server_port=8080 \ --global_file_segment_size=1073741824 \ --eviction_high_watermark_ratio=0.95 \ --root_fs_dir=/root/dfs_dir/
我的mooncake部署是一个master,4个store,每个store机器上都挂载了该目录。现象是,能够正常地启动sglang,并正常运行bench,过程中dfs目录中也会持续写入文件。但我的问题是:sglang::scheduler进程的内存占用会飙升,直到吃满整个机器。我这里有两个需求:

  1. 我怀疑是sglang内置了mooncake的client在吃内存,但不知道是什么确切的原因,还请解惑
  2. 这种情况能否抑制或改善,我尝试了指定--global_file_segment_size参数没有看到预期的效果。
    谢谢!

Before submitting a new issue...

  • Make sure you already searched for relevant issues and read the documentation
Originally created by @dcosmos on GitHub (Dec 11, 2025). Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/1195 ### Describe your usage question 使用mooncake当作sglang hicache的L3,我给mooncake master开启了root_fs_dir,root_fs_dir是挂载的一个DFS。 `mooncake_master \ --enable_http_metadata_server=true \ --http_metadata_server_host=0.0.0.0 \ --http_metadata_server_port=8080 \ --global_file_segment_size=1073741824 \ --eviction_high_watermark_ratio=0.95 \ --root_fs_dir=/root/dfs_dir/` 我的mooncake部署是一个master,4个store,每个store机器上都挂载了该目录。现象是,能够正常地启动sglang,并正常运行bench,过程中dfs目录中也会持续写入文件。但我的问题是:sglang::scheduler进程的内存占用会飙升,直到吃满整个机器。我这里有两个需求: 1. 我怀疑是sglang内置了mooncake的client在吃内存,但不知道是什么确切的原因,还请解惑 2. 这种情况能否抑制或改善,我尝试了指定--global_file_segment_size参数没有看到预期的效果。 谢谢! ### Before submitting a new issue... - [x] Make sure you already searched for relevant issues and read the [documentation](https://kvcache-ai.github.io/Mooncake/)
bsakaguchi 2026-10-29 21:14:01 +00:00
Author
Owner

@stmatengss commented on GitHub (Dec 11, 2025):

请问用的mooncake版本是哪个?以及挂载的DFS是哪种?

<!-- gh-comment-id:3640847809 --> @stmatengss commented on GitHub (Dec 11, 2025): 请问用的mooncake版本是哪个?以及挂载的DFS是哪种?
Author
Owner

@dcosmos commented on GitHub (Dec 11, 2025):

请问用的mooncake版本是哪个?以及挂载的DFS是哪种?

我的版本是0.3.7.post2,挂载的DFS是我们自己开发的一个分布式文件系统。其实我之前不挂载dfs,而是让root_fs_dir=一个本地目录的时候,表现也是一样的。

<!-- gh-comment-id:3640882642 --> @dcosmos commented on GitHub (Dec 11, 2025): > 请问用的mooncake版本是哪个?以及挂载的DFS是哪种? 我的版本是0.3.7.post2,挂载的DFS是我们自己开发的一个分布式文件系统。其实我之前不挂载dfs,而是让root_fs_dir=一个本地目录的时候,表现也是一样的。
Author
Owner

@ykwd commented on GitHub (Dec 11, 2025):

我怀疑是因为卸载数据到外存时,会先从本地内存拷贝一份副本来,然后基于这个内存副本去写入外存,写入完成后释放这个副本,如果写入的速度不够,是不是就会导致释放的速度比不上新申请副本的速度。

不过这块功能正在进行全面升级,预计很快就会有一个更完善的版本出来了,新的方案参见这里:https://github.com/kvcache-ai/Mooncake/issues/1196

<!-- gh-comment-id:3641753456 --> @ykwd commented on GitHub (Dec 11, 2025): 我怀疑是因为卸载数据到外存时,会先从本地内存拷贝一份副本来,然后基于这个内存副本去写入外存,写入完成后释放这个副本,如果写入的速度不够,是不是就会导致释放的速度比不上新申请副本的速度。 不过这块功能正在进行全面升级,预计很快就会有一个更完善的版本出来了,新的方案参见这里:https://github.com/kvcache-ai/Mooncake/issues/1196
Author
Owner

@dcosmos commented on GitHub (Dec 12, 2025):

我怀疑是因为卸载数据到外存时,会先从本地内存拷贝一份副本来,然后基于这个内存副本去写入外存,写入完成后释放这个副本,如果写入的速度不够,是不是就会导致释放的速度比不上新申请副本的速度。

不过这块功能正在进行全面升级,预计很快就会有一个更完善的版本出来了,新的方案参见这里:#1196

谢谢!

<!-- gh-comment-id:3645216431 --> @dcosmos commented on GitHub (Dec 12, 2025): > 我怀疑是因为卸载数据到外存时,会先从本地内存拷贝一份副本来,然后基于这个内存副本去写入外存,写入完成后释放这个副本,如果写入的速度不够,是不是就会导致释放的速度比不上新申请副本的速度。 > > 不过这块功能正在进行全面升级,预计很快就会有一个更完善的版本出来了,新的方案参见这里:[#1196](https://github.com/kvcache-ai/Mooncake/issues/1196) 谢谢!
Author
Owner

@zhaotyer commented on GitHub (Mar 2, 2026):

请问用的mooncake版本是哪个?以及挂载的DFS是哪种?

最新的0.3.9版本也有这个问题

<!-- gh-comment-id:3982846719 --> @zhaotyer commented on GitHub (Mar 2, 2026): > 请问用的mooncake版本是哪个?以及挂载的DFS是哪种? 最新的0.3.9版本也有这个问题
Author
Owner

@zhangzuo21 commented on GitHub (Mar 2, 2026):

请问用的mooncake版本是哪个?以及挂载的DFS是哪种?

最新的0.3.9版本也有这个问题

请问你启动的配置是什么,现在外存的支持已经有一个新方案了,用法是:启动master的时候加入--enable_offload true参数,然后启动real_client:./build/mooncake-store/src/mooncake_client --host="127.0.0.1" --global_segment_size="20GB" -master_server_address="localhost:50053" --metadata_server="P2PHANDSHAKE" --enable_offload=true protocol="rdma" 其他都可以配置,最重要的是--enable_offload=true这个参数。同时在运行之前通过MOONCAKE_OFFLOAD_FILE_STORAGE_PATH这个环境变量指定存储路径

<!-- gh-comment-id:3983360345 --> @zhangzuo21 commented on GitHub (Mar 2, 2026): > > 请问用的mooncake版本是哪个?以及挂载的DFS是哪种? > > 最新的0.3.9版本也有这个问题 请问你启动的配置是什么,现在外存的支持已经有一个新方案了,用法是:启动master的时候加入--enable_offload true参数,然后启动real_client:./build/mooncake-store/src/mooncake_client --host="127.0.0.1" --global_segment_size="20GB" -master_server_address="localhost:50053" --metadata_server="P2PHANDSHAKE" --enable_offload=true protocol="rdma" 其他都可以配置,最重要的是--enable_offload=true这个参数。同时在运行之前通过MOONCAKE_OFFLOAD_FILE_STORAGE_PATH这个环境变量指定存储路径
Author
Owner

@zhaotyer commented on GitHub (Mar 2, 2026):

请问用的mooncake版本是哪个?以及挂载的DFS是哪种?

最新的0.3.9版本也有这个问题

请问你启动的配置是什么,现在外存的支持已经有一个新方案了,用法是:启动master的时候加入--enable_offload true参数,然后启动real_client:./build/mooncake-store/src/mooncake_client --host="127.0.0.1" --global_segment_size="20GB" -master_server_address="localhost:50053" --metadata_server="P2PHANDSHAKE" --enable_offload=true protocol="rdma" 其他都可以配置,最重要的是--enable_offload=true这个参数。同时在运行之前通过MOONCAKE_OFFLOAD_FILE_STORAGE_PATH这个环境变量指定存储路径

我的配置如下

# =========================================================
# mooncake-master Deployment
# =========================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mooncake-master
  labels:
    app: mooncake-master
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mooncake-master
  template:
    metadata:
      labels:
        app: mooncake-master
    spec:
      containers:
        - name: master
          image: harbor.transwarp.io/aip/sglang:glm5-hopper
          imagePullPolicy: IfNotPresent
          command:
            - mooncake_master
          args:
            - --enable_http_metadata_server=true
            - --eviction_high_watermark_ratio=0.95
            - --rpc_address
            - 0.0.0.0
            - --rpc_port
            - "50051"
            - --http_metadata_server_host
            - 0.0.0.0
            - --http_metadata_server_port
            - "8080"
            - --metrics_port
            - "9003"
            # - --root_fs_dir
            # - /data/mooncache
            # - --global_file_segment_size
            # - "1099511627776"    
          env:
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
          ports:
            - name: grpc
              containerPort: 50051
            - name: http
              containerPort: 8080
            - name: metrics
              containerPort: 9003
          readinessProbe:
            tcpSocket:
              port: 8080
            initialDelaySeconds: 10
            periodSeconds: 10

---
# =========================================================
# mooncake-master Service
# =========================================================
apiVersion: v1
kind: Service
metadata:
  name: mooncake-master
  labels:
    app: mooncake-master
spec:
  selector:
    app: mooncake-master
  ports:
    - name: grpc
      port: 50051
      targetPort: 50051
    - name: http
      port: 8080
      targetPort: 8080
    - name: metrics
      port: 9003
      targetPort: 9003
  type: ClusterIP

---
# =========================================================
# mooncake-store Headless Service
# =========================================================
apiVersion: v1
kind: Service
metadata:
  name: mooncake-store
  labels:
    app: mooncake-store
spec:
  clusterIP: None
  selector:
    app: mooncake-store
  ports:
    - name: store
      port: 12345
      targetPort: 12345

---
# =========================================================
# mooncake-store DaemonSet
# =========================================================
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: mooncake-store
  labels:
    app: mooncake-store
spec:
  selector:
    matchLabels:
      app: mooncake-store
  template:
    metadata:
      labels:
        app: mooncake-store
    spec:
      # 只运行在 dev17 / dev19
      nodeSelector:
        mooncake-store: "true"

      # 等待 master 就绪(强烈推荐)
      # initContainers:
      #   - name: wait-for-master
      #     image: busybox:1.36
      #     command:
      #       - sh
      #       - -c
      #       - |
      #         until nc -z mooncake-master 50051; do
      #           echo "waiting for mooncake-master...";
      #           sleep 2;
      #         done

      containers:
        - name: store
          image: harbor.transwarp.io/aip/sglang:glm5-hopper
          imagePullPolicy: IfNotPresent
          command:
            - python
            - -m
            - mooncake.mooncake_store_service
          env:
            - name: MOONCAKE_MASTER
              value: "mooncake-master:50051"
            - name: MOONCAKE_TE_META_DATA_SERVER
              value: "http://mooncake-master:8080/metadata"
            - name: MOONCAKE_PROTOCOL
              value: "rdma"
            - name: MOONCAKE_DEVICE
              value: ""
            - name: MOONCAKE_GLOBAL_SEGMENT_SIZE
              value: "200gb"
            - name: MOONCAKE_LOCAL_BUFFER_SIZE
              value: "0"
          resources:
            requests:
              memory: "210Gi"
              rdma/hca_shared_devices_a: 1
            limits:
              memory: "210Gi"
              rdma/hca_shared_devices_a: 1
          securityContext:
            capabilities:
              add:
              - IPC_LOCK
          volumeMounts:
            - mountPath: /dev/shm
              name: dshm
            - name: nfs-vol
              mountPath: /data/mooncache
      volumes:
        - name: dshm
          emptyDir:
            medium: Memory
            sizeLimit: 50Gi
        - name: nfs-vol
          nfs:
            server: 172.17.124.39       # ← 这里换成你的 NFS 服务器 IP
            path: /mnt/disk2/models/kv_cache           # ← 这里换成你 NFS 上共享的目录
            readOnly: false

现在是将mooncake_client代替 mooncake store?

<!-- gh-comment-id:3983916836 --> @zhaotyer commented on GitHub (Mar 2, 2026): > > > 请问用的mooncake版本是哪个?以及挂载的DFS是哪种? > > > > > > 最新的0.3.9版本也有这个问题 > > 请问你启动的配置是什么,现在外存的支持已经有一个新方案了,用法是:启动master的时候加入--enable_offload true参数,然后启动real_client:./build/mooncake-store/src/mooncake_client --host="127.0.0.1" --global_segment_size="20GB" -master_server_address="localhost:50053" --metadata_server="P2PHANDSHAKE" --enable_offload=true protocol="rdma" 其他都可以配置,最重要的是--enable_offload=true这个参数。同时在运行之前通过MOONCAKE_OFFLOAD_FILE_STORAGE_PATH这个环境变量指定存储路径 我的配置如下 ``` # ========================================================= # mooncake-master Deployment # ========================================================= apiVersion: apps/v1 kind: Deployment metadata: name: mooncake-master labels: app: mooncake-master spec: replicas: 1 selector: matchLabels: app: mooncake-master template: metadata: labels: app: mooncake-master spec: containers: - name: master image: harbor.transwarp.io/aip/sglang:glm5-hopper imagePullPolicy: IfNotPresent command: - mooncake_master args: - --enable_http_metadata_server=true - --eviction_high_watermark_ratio=0.95 - --rpc_address - 0.0.0.0 - --rpc_port - "50051" - --http_metadata_server_host - 0.0.0.0 - --http_metadata_server_port - "8080" - --metrics_port - "9003" # - --root_fs_dir # - /data/mooncache # - --global_file_segment_size # - "1099511627776" env: - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP ports: - name: grpc containerPort: 50051 - name: http containerPort: 8080 - name: metrics containerPort: 9003 readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 10 periodSeconds: 10 --- # ========================================================= # mooncake-master Service # ========================================================= apiVersion: v1 kind: Service metadata: name: mooncake-master labels: app: mooncake-master spec: selector: app: mooncake-master ports: - name: grpc port: 50051 targetPort: 50051 - name: http port: 8080 targetPort: 8080 - name: metrics port: 9003 targetPort: 9003 type: ClusterIP --- # ========================================================= # mooncake-store Headless Service # ========================================================= apiVersion: v1 kind: Service metadata: name: mooncake-store labels: app: mooncake-store spec: clusterIP: None selector: app: mooncake-store ports: - name: store port: 12345 targetPort: 12345 --- # ========================================================= # mooncake-store DaemonSet # ========================================================= apiVersion: apps/v1 kind: DaemonSet metadata: name: mooncake-store labels: app: mooncake-store spec: selector: matchLabels: app: mooncake-store template: metadata: labels: app: mooncake-store spec: # 只运行在 dev17 / dev19 nodeSelector: mooncake-store: "true" # 等待 master 就绪(强烈推荐) # initContainers: # - name: wait-for-master # image: busybox:1.36 # command: # - sh # - -c # - | # until nc -z mooncake-master 50051; do # echo "waiting for mooncake-master..."; # sleep 2; # done containers: - name: store image: harbor.transwarp.io/aip/sglang:glm5-hopper imagePullPolicy: IfNotPresent command: - python - -m - mooncake.mooncake_store_service env: - name: MOONCAKE_MASTER value: "mooncake-master:50051" - name: MOONCAKE_TE_META_DATA_SERVER value: "http://mooncake-master:8080/metadata" - name: MOONCAKE_PROTOCOL value: "rdma" - name: MOONCAKE_DEVICE value: "" - name: MOONCAKE_GLOBAL_SEGMENT_SIZE value: "200gb" - name: MOONCAKE_LOCAL_BUFFER_SIZE value: "0" resources: requests: memory: "210Gi" rdma/hca_shared_devices_a: 1 limits: memory: "210Gi" rdma/hca_shared_devices_a: 1 securityContext: capabilities: add: - IPC_LOCK volumeMounts: - mountPath: /dev/shm name: dshm - name: nfs-vol mountPath: /data/mooncache volumes: - name: dshm emptyDir: medium: Memory sizeLimit: 50Gi - name: nfs-vol nfs: server: 172.17.124.39 # ← 这里换成你的 NFS 服务器 IP path: /mnt/disk2/models/kv_cache # ← 这里换成你 NFS 上共享的目录 readOnly: false ``` 现在是将mooncake_client代替 mooncake store?
Author
Owner

@zhangzuo21 commented on GitHub (Mar 2, 2026):

请问用的mooncake版本是哪个?以及挂载的DFS是哪种?

最新的0.3.9版本也有这个问题

请问你启动的配置是什么,现在外存的支持已经有一个新方案了,用法是:启动master的时候加入--enable_offload true参数,然后启动real_client:./build/mooncake-store/src/mooncake_client --host="127.0.0.1" --global_segment_size="20GB" -master_server_address="localhost:50053" --metadata_server="P2PHANDSHAKE" --enable_offload=true protocol="rdma" 其他都可以配置,最重要的是--enable_offload=true这个参数。同时在运行之前通过MOONCAKE_OFFLOAD_FILE_STORAGE_PATH这个环境变量指定存储路径

我的配置如下

# =========================================================
# mooncake-master Deployment
# =========================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mooncake-master
  labels:
    app: mooncake-master
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mooncake-master
  template:
    metadata:
      labels:
        app: mooncake-master
    spec:
      containers:
        - name: master
          image: harbor.transwarp.io/aip/sglang:glm5-hopper
          imagePullPolicy: IfNotPresent
          command:
            - mooncake_master
          args:
            - --enable_http_metadata_server=true
            - --eviction_high_watermark_ratio=0.95
            - --rpc_address
            - 0.0.0.0
            - --rpc_port
            - "50051"
            - --http_metadata_server_host
            - 0.0.0.0
            - --http_metadata_server_port
            - "8080"
            - --metrics_port
            - "9003"
            # - --root_fs_dir
            # - /data/mooncache
            # - --global_file_segment_size
            # - "1099511627776"    
          env:
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
          ports:
            - name: grpc
              containerPort: 50051
            - name: http
              containerPort: 8080
            - name: metrics
              containerPort: 9003
          readinessProbe:
            tcpSocket:
              port: 8080
            initialDelaySeconds: 10
            periodSeconds: 10

---
# =========================================================
# mooncake-master Service
# =========================================================
apiVersion: v1
kind: Service
metadata:
  name: mooncake-master
  labels:
    app: mooncake-master
spec:
  selector:
    app: mooncake-master
  ports:
    - name: grpc
      port: 50051
      targetPort: 50051
    - name: http
      port: 8080
      targetPort: 8080
    - name: metrics
      port: 9003
      targetPort: 9003
  type: ClusterIP

---
# =========================================================
# mooncake-store Headless Service
# =========================================================
apiVersion: v1
kind: Service
metadata:
  name: mooncake-store
  labels:
    app: mooncake-store
spec:
  clusterIP: None
  selector:
    app: mooncake-store
  ports:
    - name: store
      port: 12345
      targetPort: 12345

---
# =========================================================
# mooncake-store DaemonSet
# =========================================================
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: mooncake-store
  labels:
    app: mooncake-store
spec:
  selector:
    matchLabels:
      app: mooncake-store
  template:
    metadata:
      labels:
        app: mooncake-store
    spec:
      # 只运行在 dev17 / dev19
      nodeSelector:
        mooncake-store: "true"

      # 等待 master 就绪(强烈推荐)
      # initContainers:
      #   - name: wait-for-master
      #     image: busybox:1.36
      #     command:
      #       - sh
      #       - -c
      #       - |
      #         until nc -z mooncake-master 50051; do
      #           echo "waiting for mooncake-master...";
      #           sleep 2;
      #         done

      containers:
        - name: store
          image: harbor.transwarp.io/aip/sglang:glm5-hopper
          imagePullPolicy: IfNotPresent
          command:
            - python
            - -m
            - mooncake.mooncake_store_service
          env:
            - name: MOONCAKE_MASTER
              value: "mooncake-master:50051"
            - name: MOONCAKE_TE_META_DATA_SERVER
              value: "http://mooncake-master:8080/metadata"
            - name: MOONCAKE_PROTOCOL
              value: "rdma"
            - name: MOONCAKE_DEVICE
              value: ""
            - name: MOONCAKE_GLOBAL_SEGMENT_SIZE
              value: "200gb"
            - name: MOONCAKE_LOCAL_BUFFER_SIZE
              value: "0"
          resources:
            requests:
              memory: "210Gi"
              rdma/hca_shared_devices_a: 1
            limits:
              memory: "210Gi"
              rdma/hca_shared_devices_a: 1
          securityContext:
            capabilities:
              add:
              - IPC_LOCK
          volumeMounts:
            - mountPath: /dev/shm
              name: dshm
            - name: nfs-vol
              mountPath: /data/mooncache
      volumes:
        - name: dshm
          emptyDir:
            medium: Memory
            sizeLimit: 50Gi
        - name: nfs-vol
          nfs:
            server: 172.17.124.39       # ← 这里换成你的 NFS 服务器 IP
            path: /mnt/disk2/models/kv_cache           # ← 这里换成你 NFS 上共享的目录
            readOnly: false

现在是将mooncake_client代替 mooncake store?

现在新的方案暂时还只能用编译后的real_client二进制启动。如果是使用发行版的whl下载,这个二进制一般在 “python环境/bin/mooncake_client”。需要执行这个二进制文件。例如:启动单个master+单个client:
启动master:

mooncake_master --port 50053 --metrics-port 9005 --enable_offload true

启动client:

export MOONCAKE_OFFLOAD_FILE_STORAGE_PATH="/mnt/data/file_storage" # 指定存储路径
export MOONCAKE_OFFLOAD_LOCAL_BUFFER_SIZE_BYTES=10737418240 # 指定load buffer的大小
mooncake_client --host="127.0.0.1" --global_segment_size="80GB"     --master_server_address="localhost:50053"     --metadata_server="P2PHANDSHAKE"       --protocol="rdma"     --device_names="ibp12s0" --enable_offload="true" --port=50054
<!-- gh-comment-id:3985131423 --> @zhangzuo21 commented on GitHub (Mar 2, 2026): > > > > 请问用的mooncake版本是哪个?以及挂载的DFS是哪种? > > > > > > > > > 最新的0.3.9版本也有这个问题 > > > > > > 请问你启动的配置是什么,现在外存的支持已经有一个新方案了,用法是:启动master的时候加入--enable_offload true参数,然后启动real_client:./build/mooncake-store/src/mooncake_client --host="127.0.0.1" --global_segment_size="20GB" -master_server_address="localhost:50053" --metadata_server="P2PHANDSHAKE" --enable_offload=true protocol="rdma" 其他都可以配置,最重要的是--enable_offload=true这个参数。同时在运行之前通过MOONCAKE_OFFLOAD_FILE_STORAGE_PATH这个环境变量指定存储路径 > > 我的配置如下 > > ``` > # ========================================================= > # mooncake-master Deployment > # ========================================================= > apiVersion: apps/v1 > kind: Deployment > metadata: > name: mooncake-master > labels: > app: mooncake-master > spec: > replicas: 1 > selector: > matchLabels: > app: mooncake-master > template: > metadata: > labels: > app: mooncake-master > spec: > containers: > - name: master > image: harbor.transwarp.io/aip/sglang:glm5-hopper > imagePullPolicy: IfNotPresent > command: > - mooncake_master > args: > - --enable_http_metadata_server=true > - --eviction_high_watermark_ratio=0.95 > - --rpc_address > - 0.0.0.0 > - --rpc_port > - "50051" > - --http_metadata_server_host > - 0.0.0.0 > - --http_metadata_server_port > - "8080" > - --metrics_port > - "9003" > # - --root_fs_dir > # - /data/mooncache > # - --global_file_segment_size > # - "1099511627776" > env: > - name: POD_IP > valueFrom: > fieldRef: > fieldPath: status.podIP > ports: > - name: grpc > containerPort: 50051 > - name: http > containerPort: 8080 > - name: metrics > containerPort: 9003 > readinessProbe: > tcpSocket: > port: 8080 > initialDelaySeconds: 10 > periodSeconds: 10 > > --- > # ========================================================= > # mooncake-master Service > # ========================================================= > apiVersion: v1 > kind: Service > metadata: > name: mooncake-master > labels: > app: mooncake-master > spec: > selector: > app: mooncake-master > ports: > - name: grpc > port: 50051 > targetPort: 50051 > - name: http > port: 8080 > targetPort: 8080 > - name: metrics > port: 9003 > targetPort: 9003 > type: ClusterIP > > --- > # ========================================================= > # mooncake-store Headless Service > # ========================================================= > apiVersion: v1 > kind: Service > metadata: > name: mooncake-store > labels: > app: mooncake-store > spec: > clusterIP: None > selector: > app: mooncake-store > ports: > - name: store > port: 12345 > targetPort: 12345 > > --- > # ========================================================= > # mooncake-store DaemonSet > # ========================================================= > apiVersion: apps/v1 > kind: DaemonSet > metadata: > name: mooncake-store > labels: > app: mooncake-store > spec: > selector: > matchLabels: > app: mooncake-store > template: > metadata: > labels: > app: mooncake-store > spec: > # 只运行在 dev17 / dev19 > nodeSelector: > mooncake-store: "true" > > # 等待 master 就绪(强烈推荐) > # initContainers: > # - name: wait-for-master > # image: busybox:1.36 > # command: > # - sh > # - -c > # - | > # until nc -z mooncake-master 50051; do > # echo "waiting for mooncake-master..."; > # sleep 2; > # done > > containers: > - name: store > image: harbor.transwarp.io/aip/sglang:glm5-hopper > imagePullPolicy: IfNotPresent > command: > - python > - -m > - mooncake.mooncake_store_service > env: > - name: MOONCAKE_MASTER > value: "mooncake-master:50051" > - name: MOONCAKE_TE_META_DATA_SERVER > value: "http://mooncake-master:8080/metadata" > - name: MOONCAKE_PROTOCOL > value: "rdma" > - name: MOONCAKE_DEVICE > value: "" > - name: MOONCAKE_GLOBAL_SEGMENT_SIZE > value: "200gb" > - name: MOONCAKE_LOCAL_BUFFER_SIZE > value: "0" > resources: > requests: > memory: "210Gi" > rdma/hca_shared_devices_a: 1 > limits: > memory: "210Gi" > rdma/hca_shared_devices_a: 1 > securityContext: > capabilities: > add: > - IPC_LOCK > volumeMounts: > - mountPath: /dev/shm > name: dshm > - name: nfs-vol > mountPath: /data/mooncache > volumes: > - name: dshm > emptyDir: > medium: Memory > sizeLimit: 50Gi > - name: nfs-vol > nfs: > server: 172.17.124.39 # ← 这里换成你的 NFS 服务器 IP > path: /mnt/disk2/models/kv_cache # ← 这里换成你 NFS 上共享的目录 > readOnly: false > ``` > > 现在是将mooncake_client代替 mooncake store? 现在新的方案暂时还只能用编译后的real_client二进制启动。如果是使用发行版的whl下载,这个二进制一般在 “python环境/bin/mooncake_client”。需要执行这个二进制文件。例如:启动单个master+单个client: 启动master: ``` mooncake_master --port 50053 --metrics-port 9005 --enable_offload true ``` 启动client: ``` export MOONCAKE_OFFLOAD_FILE_STORAGE_PATH="/mnt/data/file_storage" # 指定存储路径 export MOONCAKE_OFFLOAD_LOCAL_BUFFER_SIZE_BYTES=10737418240 # 指定load buffer的大小 mooncake_client --host="127.0.0.1" --global_segment_size="80GB" --master_server_address="localhost:50053" --metadata_server="P2PHANDSHAKE" --protocol="rdma" --device_names="ibp12s0" --enable_offload="true" --port=50054 ```
Author
Owner

@zhaotyer commented on GitHub (Mar 3, 2026):

MOONCAKE_OFFLOAD_FILE_STORAGE_PATH

看官方文档讲到了这个,存在两个疑问:
1.现在sglang需要直连real client,如果有多台机器需要共享机器内存怎么处理(部署多个real client?)
2.现在mooncake master 的--root_fs_dir是不是不需要了,感觉这种设计破环了中心化设计(有master统一管理)

<!-- gh-comment-id:3988367441 --> @zhaotyer commented on GitHub (Mar 3, 2026): > MOONCAKE_OFFLOAD_FILE_STORAGE_PATH 看官方文档讲到了这个,存在两个疑问: 1.现在sglang需要直连real client,如果有多台机器需要共享机器内存怎么处理(部署多个real client?) 2.现在mooncake master 的--root_fs_dir是不是不需要了,感觉这种设计破环了中心化设计(有master统一管理)
Author
Owner

@ykwd commented on GitHub (Mar 3, 2026):

1.现在sglang需要直连real client,如果有多台机器需要共享机器内存怎么处理(部署多个real client?)

是否使用 dummy-real client 的部署模式是一个可选项,旨在解决如下问题:一个sglang实例有N个rank/进程,每个rank/进程都有一个单独的Mooncake store,每个store都有单独的transfer engine和global segment,每个 transfer engine 都会独立网卡资源,过多global segment会导致全局的segment的管理和内存分配效果下降的问题。

一般来说,小规模集群不需要使用这个模式。如果要使用这个部署模式时,会把同一个sglang实例的多个rank的dummy client 指向同一个 real client。不同的服务器之间的 real client 是独立的

<!-- gh-comment-id:3988474728 --> @ykwd commented on GitHub (Mar 3, 2026): > 1.现在sglang需要直连real client,如果有多台机器需要共享机器内存怎么处理(部署多个real client?) 是否使用 dummy-real client 的部署模式是一个可选项,旨在解决如下问题:一个sglang实例有N个rank/进程,每个rank/进程都有一个单独的Mooncake store,每个store都有单独的transfer engine和global segment,每个 transfer engine 都会独立网卡资源,过多global segment会导致全局的segment的管理和内存分配效果下降的问题。 一般来说,小规模集群不需要使用这个模式。如果要使用这个部署模式时,会把同一个sglang实例的多个rank的dummy client 指向同一个 real client。不同的服务器之间的 real client 是独立的
Author
Owner

@ykwd commented on GitHub (Mar 3, 2026):

2.现在mooncake master 的--root_fs_dir是不是不需要了,感觉这种设计破环了中心化设计(有master统一管理)

确实。新版本的技术方案里没有用到这个了。等到删除旧方案代码的时候可以一并删除。现在的问题我感觉更多的是缺少使用新方案实现的方法文档,这块 @zhangzuo21 会帮忙补上。新方案目前还缺少ssd数据满了evict的功能(这个功能的pr正在review中),等这个功能完成后,感觉共享外存的feature的拼图就完成了。

<!-- gh-comment-id:3988492719 --> @ykwd commented on GitHub (Mar 3, 2026): > 2.现在mooncake master 的--root_fs_dir是不是不需要了,感觉这种设计破环了中心化设计(有master统一管理) 确实。新版本的技术方案里没有用到这个了。等到删除旧方案代码的时候可以一并删除。现在的问题我感觉更多的是缺少使用新方案实现的方法文档,这块 @zhangzuo21 会帮忙补上。新方案目前还缺少ssd数据满了evict的功能(这个功能的pr正在review中),等这个功能完成后,感觉共享外存的feature的拼图就完成了。
Author
Owner

@zhaotyer commented on GitHub (Mar 3, 2026):

1.现在sglang需要直连real client,如果有多台机器需要共享机器内存怎么处理(部署多个real client?)

是否使用 dummy-real client 的部署模式是一个可选项,旨在解决如下问题:一个sglang实例有N个rank/进程,每个rank/进程都有一个单独的Mooncake store,每个store都有单独的transfer engine和global segment,每个 transfer engine 都会独立网卡资源,过多global segment会导致全局的segment的管理和内存分配效果下降的问题。

一般来说,小规模集群不需要使用这个模式。如果要使用这个部署模式时,会把同一个sglang实例的多个rank的dummy client 指向同一个 real client。不同的服务器之间的 real client 是独立的

原来的是多个store service注册到master service, 多个sglang/vllm推理服务配置master service就可以了,现在每个sglang/vllm配置不同的real client,变得更麻烦了,有更优的方案吗

<!-- gh-comment-id:3988847554 --> @zhaotyer commented on GitHub (Mar 3, 2026): > > 1.现在sglang需要直连real client,如果有多台机器需要共享机器内存怎么处理(部署多个real client?) > > 是否使用 dummy-real client 的部署模式是一个可选项,旨在解决如下问题:一个sglang实例有N个rank/进程,每个rank/进程都有一个单独的Mooncake store,每个store都有单独的transfer engine和global segment,每个 transfer engine 都会独立网卡资源,过多global segment会导致全局的segment的管理和内存分配效果下降的问题。 > > 一般来说,小规模集群不需要使用这个模式。如果要使用这个部署模式时,会把同一个sglang实例的多个rank的dummy client 指向同一个 real client。不同的服务器之间的 real client 是独立的 原来的是多个store service注册到master service, 多个sglang/vllm推理服务配置master service就可以了,现在每个sglang/vllm配置不同的real client,变得更麻烦了,有更优的方案吗
Author
Owner

@ykwd commented on GitHub (Mar 3, 2026):

原来的是多个store service注册到master service, 多个sglang/vllm推理服务配置master service就可以了,现在每个sglang/vllm配置不同的real client,变得更麻烦了,有更优的方案吗

有些误解:

  1. 现在也是需要的master service的,dummy-real client 模式的区别在于,每个sglang实例需要额外部署一个real client。
  2. 只有sglang+mooncake支持了dummy/real client模式的部署,vllm+mooncake还没有。
  3. 原来的部署模式也支持的,没有变化。dummy-real client 模式是新增的一个可选项
<!-- gh-comment-id:3988937721 --> @ykwd commented on GitHub (Mar 3, 2026): > 原来的是多个store service注册到master service, 多个sglang/vllm推理服务配置master service就可以了,现在每个sglang/vllm配置不同的real client,变得更麻烦了,有更优的方案吗 有些误解: 1. 现在也是需要的master service的,dummy-real client 模式的区别在于,每个sglang实例需要额外部署一个real client。 2. 只有sglang+mooncake支持了dummy/real client模式的部署,vllm+mooncake还没有。 3. 原来的部署模式也支持的,没有变化。dummy-real client 模式是新增的一个可选项
Author
Owner

@zhaotyer commented on GitHub (Mar 3, 2026):

原来的是多个store service注册到master service, 多个sglang/vllm推理服务配置master service就可以了,现在每个sglang/vllm配置不同的real client,变得更麻烦了,有更优的方案吗

有些误解:

  1. 现在也是需要的master service的,dummy-real client 模式的区别在于,每个sglang实例需要额外部署一个real client。
  2. 只有sglang+mooncake支持了dummy/real client模式的部署,vllm+mooncake还没有。
  3. 原来的部署模式也支持的,没有变化。dummy-real client 模式是新增的一个可选项

好的,感谢大佬,这个real client看启动命令,也负责把一部分mem/disk资源注册到master吗?,只有与他相连的dummy-client才能使用这部分资源?如果real-client不注册资源,real-client能否使用store service注册的资源

<!-- gh-comment-id:3988984010 --> @zhaotyer commented on GitHub (Mar 3, 2026): > > 原来的是多个store service注册到master service, 多个sglang/vllm推理服务配置master service就可以了,现在每个sglang/vllm配置不同的real client,变得更麻烦了,有更优的方案吗 > > 有些误解: > > 1. 现在也是需要的master service的,dummy-real client 模式的区别在于,每个sglang实例需要额外部署一个real client。 > 2. 只有sglang+mooncake支持了dummy/real client模式的部署,vllm+mooncake还没有。 > 3. 原来的部署模式也支持的,没有变化。dummy-real client 模式是新增的一个可选项 好的,感谢大佬,这个real client看启动命令,也负责把一部分mem/disk资源注册到master吗?,只有与他相连的dummy-client才能使用这部分资源?如果real-client不注册资源,real-client能否使用store service注册的资源
Author
Owner

@ykwd commented on GitHub (Mar 3, 2026):

好的,感谢大佬,这个real client看启动命令,也负责把一部分mem/disk资源注册到master吗?,只有与他相连的dummy-client才能使用这部分资源?如果real-client不注册资源,real-client能否使用store service注册的资源

对。准确说这里的real client就等于普通的模式的client。普通模式是每个sglang rank内嵌了一个mooncake store client,每个client都会注册一部分memory到共享内存池中。dummy-real client模式中,每个rank内嵌的client不再持有资源,只由这些client共享的一个real client持有并注册memory。

可以参考这个文档中对于global segment的解释:https://kvcache-ai.github.io/Mooncake/getting_started/examples/sglang-integration/hicache-integration-v1.html#single-server-deployment

<!-- gh-comment-id:3989133044 --> @ykwd commented on GitHub (Mar 3, 2026): > 好的,感谢大佬,这个real client看启动命令,也负责把一部分mem/disk资源注册到master吗?,只有与他相连的dummy-client才能使用这部分资源?如果real-client不注册资源,real-client能否使用store service注册的资源 对。准确说这里的real client就等于普通的模式的client。普通模式是每个sglang rank内嵌了一个mooncake store client,每个client都会注册一部分memory到共享内存池中。dummy-real client模式中,每个rank内嵌的client不再持有资源,只由这些client共享的一个real client持有并注册memory。 可以参考这个文档中对于global segment的解释:https://kvcache-ai.github.io/Mooncake/getting_started/examples/sglang-integration/hicache-integration-v1.html#single-server-deployment
Author
Owner

@zhaotyer commented on GitHub (Mar 3, 2026):

好的,感谢大佬,这个real client看启动命令,也负责把一部分mem/disk资源注册到master吗?,只有与他相连的dummy-client才能使用这部分资源?如果real-client不注册资源,real-client能否使用store service注册的资源

对。准确说这里的real client就等于普通的模式的client。普通模式是每个sglang rank内嵌了一个mooncake store client,每个client都会注册一部分memory到共享内存池中。dummy-real client模式中,每个rank内嵌的client不再持有资源,只由这些client共享的一个real client持有并注册memory。

可以参考这个文档中对于global segment的解释:https://kvcache-ai.github.io/Mooncake/getting_started/examples/sglang-integration/hicache-integration-v1.html#single-server-deployment

好的,那不使用dummy-real 这种sglang内存飙升问题还有计划解决吗?不解决只能改到dummy-real 模式了,也不知道是否适配P/D分离这种场景

<!-- gh-comment-id:3989206415 --> @zhaotyer commented on GitHub (Mar 3, 2026): > > 好的,感谢大佬,这个real client看启动命令,也负责把一部分mem/disk资源注册到master吗?,只有与他相连的dummy-client才能使用这部分资源?如果real-client不注册资源,real-client能否使用store service注册的资源 > > 对。准确说这里的real client就等于普通的模式的client。普通模式是每个sglang rank内嵌了一个mooncake store client,每个client都会注册一部分memory到共享内存池中。dummy-real client模式中,每个rank内嵌的client不再持有资源,只由这些client共享的一个real client持有并注册memory。 > > 可以参考这个文档中对于global segment的解释:https://kvcache-ai.github.io/Mooncake/getting_started/examples/sglang-integration/hicache-integration-v1.html#single-server-deployment 好的,那不使用dummy-real 这种sglang内存飙升问题还有计划解决吗?不解决只能改到dummy-real 模式了,也不知道是否适配P/D分离这种场景
Author
Owner

@ykwd commented on GitHub (Mar 3, 2026):

内存飙升是只有开启root_fs_dir时才有对吧?如果要使用外存的话,不开启root_fs_dir,直接使用 @zhangzuo21 在上面提到的新的配置如何?

<!-- gh-comment-id:3989227861 --> @ykwd commented on GitHub (Mar 3, 2026): 内存飙升是只有开启root_fs_dir时才有对吧?如果要使用外存的话,不开启root_fs_dir,直接使用 @zhangzuo21 在上面提到的新的配置如何?
Author
Owner

@zhaotyer commented on GitHub (Mar 3, 2026):

内存飙升是只有开启root_fs_dir时才有对吧?如果要使用外存的话,不开启root_fs_dir,直接使用 @zhangzuo21 在上面提到的新的配置如何?

只有开启root_fs_dir时才有,不开启root_fs_dir直接使用real client的结果,我测试后发到这里

<!-- gh-comment-id:3989377235 --> @zhaotyer commented on GitHub (Mar 3, 2026): > 内存飙升是只有开启root_fs_dir时才有对吧?如果要使用外存的话,不开启root_fs_dir,直接使用 [@zhangzuo21](https://github.com/zhangzuo21) 在上面提到的新的配置如何? 只有开启root_fs_dir时才有,不开启root_fs_dir直接使用real client的结果,我测试后发到这里
Author
Owner

@ykwd commented on GitHub (Mar 3, 2026):

内存飙升是只有开启root_fs_dir时才有对吧?如果要使用外存的话,不开启root_fs_dir,直接使用 @zhangzuo21 在上面提到的新的配置如何?

只有开启root_fs_dir时才有,不开启root_fs_dir直接使用real client的结果,我测试后发到这里

ok。ps:使用dummy/real client方案或者使用原有的部署方案,和是否开启共享外存( --enable_offload true 并在client测设置MOONCAKE_OFFLOAD_FILE_STORAGE_PATH),是独立的两个选择

<!-- gh-comment-id:3989398285 --> @ykwd commented on GitHub (Mar 3, 2026): > > 内存飙升是只有开启root_fs_dir时才有对吧?如果要使用外存的话,不开启root_fs_dir,直接使用 [@zhangzuo21](https://github.com/zhangzuo21) 在上面提到的新的配置如何? > > 只有开启root_fs_dir时才有,不开启root_fs_dir直接使用real client的结果,我测试后发到这里 ok。ps:使用dummy/real client方案或者使用原有的部署方案,和是否开启共享外存( --enable_offload true 并在client测设置MOONCAKE_OFFLOAD_FILE_STORAGE_PATH),是独立的两个选择
Author
Owner

@zhaotyer commented on GitHub (Mar 4, 2026):

内存飙升是只有开启root_fs_dir时才有对吧?如果要使用外存的话,不开启root_fs_dir,直接使用 @zhangzuo21 在上面提到的新的配置如何?

只有开启root_fs_dir时才有,不开启root_fs_dir直接使用real client的结果,我测试后发到这里

ok。ps:使用dummy/real client方案或者使用原有的部署方案,和是否开启共享外存( --enable_offload true 并在client测设置MOONCAKE_OFFLOAD_FILE_STORAGE_PATH),是独立的两个选择

# =========================================================
# mooncake-master Deployment
# =========================================================
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mooncake-master
  labels:
    app: mooncake-master
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mooncake-master
  template:
    metadata:
      labels:
        app: mooncake-master
    spec:
      containers:
        - name: master
          image: harbor.transwarp.io/aip/sglang:glm5-hopper
          imagePullPolicy: IfNotPresent
          command:
            - mooncake_master
          args:
            - --enable_http_metadata_server=true
            - --eviction_high_watermark_ratio=0.95
            - --rpc_address
            - 0.0.0.0
            - --rpc_port
            - "50051"
            - --http_metadata_server_host
            - 0.0.0.0
            - --http_metadata_server_port
            - "8080"
            - --metrics_port
            - "9003"
            - --enable_offload=true
          env:
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
          ports:
            - name: grpc
              containerPort: 50051
            - name: http
              containerPort: 8080
            - name: metrics
              containerPort: 9003
          readinessProbe:
            tcpSocket:
              port: 8080
            initialDelaySeconds: 10
            periodSeconds: 10

---
# =========================================================
# mooncake-master Service
# =========================================================
apiVersion: v1
kind: Service
metadata:
  name: mooncake-master
  labels:
    app: mooncake-master
spec:
  selector:
    app: mooncake-master
  ports:
    - name: grpc
      port: 50051
      targetPort: 50051
    - name: http
      port: 8080
      targetPort: 8080
    - name: metrics
      port: 9003
      targetPort: 9003
  type: ClusterIP

---
# =========================================================
# mooncake-store Headless Service
# =========================================================
apiVersion: v1
kind: Service
metadata:
  name: mooncake-store
  labels:
    app: mooncake-store
spec:
  clusterIP: None
  selector:
    app: mooncake-store
  ports:
    - name: store
      port: 50054
      targetPort: 50054

---
# =========================================================
# mooncake-store DaemonSet
# =========================================================
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: mooncake-store
  labels:
    app: mooncake-store
spec:
  selector:
    matchLabels:
      app: mooncake-store
  template:
    metadata:
      labels:
        app: mooncake-store
    spec:
      # 只运行在 dev17 / dev19
      nodeSelector:
        mooncake-store: "true"

      # 等待 master 就绪(强烈推荐)
      # initContainers:
      #   - name: wait-for-master
      #     image: busybox:1.36
      #     command:
      #       - sh
      #       - -c
      #       - |
      #         until nc -z mooncake-master 50051; do
      #           echo "waiting for mooncake-master...";
      #           sleep 2;
      #         done

      containers:
        - name: store
          image: harbor.transwarp.io/aip/sglang:glm5-hopper
          imagePullPolicy: IfNotPresent
          command:
            - mooncake_client 
          args:
            - --host="0.0.0.0" 
            - --global_segment_size="80GB"     
            - --metadata_server="http://mooncake-master:8080/metadata"  
            - --enable_offload=true
            - --port=50054
            - --master_server_address="mooncake-master:50051" 
            - --protocol="tcp" 
          env:
            # - name: MOONCAKE_MASTER
            #   value: "mooncake-master:50051"
            # - name: MOONCAKE_TE_META_DATA_SERVER
            #   value: "http://mooncake-master:8080/metadata"
            # - name: MOONCAKE_PROTOCOL
            #   value: "rdma"
            # - name: MOONCAKE_DEVICE
            #   value: ""
            # - name: MOONCAKE_GLOBAL_SEGMENT_SIZE
            #   value: "200gb"
            # - name: MOONCAKE_LOCAL_BUFFER_SIZE
            #   value: "0"
            - name: MOONCAKE_OFFLOAD_FILE_STORAGE_PATH
              value: "/data/mooncache"
            - name: MOONCAKE_OFFLOAD_LOCAL_BUFFER_SIZE_BYTES
              value: "1099511627776"   
          resources:
            requests:
              memory: "210Gi"
              rdma/hca_shared_devices_a: 1
            limits:
              memory: "210Gi"
              rdma/hca_shared_devices_a: 1
          securityContext:
            capabilities:
              add:
              - IPC_LOCK
          volumeMounts:
            - mountPath: /dev/shm
              name: dshm
            - name: nfs-vol
              mountPath: /data/mooncache
      volumes:
        - name: dshm
          emptyDir:
            medium: Memory
            sizeLimit: 50Gi
        - name: nfs-vol
          nfs:
            server: 172.17.124.39       # ← 这里换成你的 NFS 服务器 IP
            path: /mnt/disk2/models/kv_cache           # ← 这里换成你 NFS 上共享的目录
            readOnly: false

real client连不上mooncake master 退出了

I0304 06:04:19.363355     7 client_service.cpp:59] Client metrics enabled but reporting disabled (interval=0)
2026-03-04 06:04:19.364135 WARNING  [35] [coro_rpc_client.hpp:964] client_id 43 async_resolve failed:Service not found
2026-03-04 06:04:20.364658 WARNING  [35] [coro_rpc_client.hpp:964] client_id 43 async_resolve failed:Service not found
2026-03-04 06:04:21.391316 WARNING  [35] [coro_rpc_client.hpp:964] client_id 43 async_resolve failed:Service not found
2026-03-04 06:04:22.542813 WARNING  [35] [coro_rpc_client.hpp:964] client_id 43 async_resolve failed:Service not found
2026-03-04 06:04:23.633890 WARNING  [35] [client_pool.hpp:207] reconnect client{0x563c094515e0},host:{"mooncake-master:50051"} out of max limit, stop retry. connect failed
E0304 06:04:23.634300    35 master_client.cpp:234] Client not available
2026-03-04 06:04:23.634284 WARNING  [35] [client_pool.hpp:445] send request to "mooncake-master:50051" failed. connection refused.
2026-03-04 06:04:23.634803 WARNING  [36] [coro_rpc_client.hpp:964] client_id 43 async_resolve failed:Service not found
W0304 06:04:23.634824     7 real_client.cpp:232] Failed to create client on port 12431, retry 7/20
I0304 06:04:23.735044     7 client_metric.cpp:80] Client metrics enabled (default enabled)
I0304 06:04:23.736239     7 ha_helper.cpp:20] Master view key: mooncake-store/mooncake/master_view
I0304 06:04:23.736250     7 client_service.cpp:51] client_id=18310961376926466-14923634240217995155
I0304 06:04:23.736258     7 client_service.cpp:59] Client metrics enabled but reporting disabled (interval=0)
2026-03-04 06:04:23.736945 WARNING  [37] [coro_rpc_client.hpp:964] client_id 50 async_resolve failed:Service not found
2026-03-04 06:04:24.737409 WARNING  [37] [coro_rpc_client.hpp:964] client_id 50 async_resolve failed:Service not found
2026-03-04 06:04:25.763888 WARNING  [37] [coro_rpc_client.hpp:964] client_id 50 async_resolve failed:Service not found
2026-03-04 06:04:26.915382 WARNING  [37] [coro_rpc_client.hpp:964] client_id 50 async_resolve failed:Service not found
<!-- gh-comment-id:3995519802 --> @zhaotyer commented on GitHub (Mar 4, 2026): > > > 内存飙升是只有开启root_fs_dir时才有对吧?如果要使用外存的话,不开启root_fs_dir,直接使用 [@zhangzuo21](https://github.com/zhangzuo21) 在上面提到的新的配置如何? > > > > > > 只有开启root_fs_dir时才有,不开启root_fs_dir直接使用real client的结果,我测试后发到这里 > > ok。ps:使用dummy/real client方案或者使用原有的部署方案,和是否开启共享外存( --enable_offload true 并在client测设置MOONCAKE_OFFLOAD_FILE_STORAGE_PATH),是独立的两个选择 ``` # ========================================================= # mooncake-master Deployment # ========================================================= apiVersion: apps/v1 kind: Deployment metadata: name: mooncake-master labels: app: mooncake-master spec: replicas: 1 selector: matchLabels: app: mooncake-master template: metadata: labels: app: mooncake-master spec: containers: - name: master image: harbor.transwarp.io/aip/sglang:glm5-hopper imagePullPolicy: IfNotPresent command: - mooncake_master args: - --enable_http_metadata_server=true - --eviction_high_watermark_ratio=0.95 - --rpc_address - 0.0.0.0 - --rpc_port - "50051" - --http_metadata_server_host - 0.0.0.0 - --http_metadata_server_port - "8080" - --metrics_port - "9003" - --enable_offload=true env: - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP ports: - name: grpc containerPort: 50051 - name: http containerPort: 8080 - name: metrics containerPort: 9003 readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 10 periodSeconds: 10 --- # ========================================================= # mooncake-master Service # ========================================================= apiVersion: v1 kind: Service metadata: name: mooncake-master labels: app: mooncake-master spec: selector: app: mooncake-master ports: - name: grpc port: 50051 targetPort: 50051 - name: http port: 8080 targetPort: 8080 - name: metrics port: 9003 targetPort: 9003 type: ClusterIP --- # ========================================================= # mooncake-store Headless Service # ========================================================= apiVersion: v1 kind: Service metadata: name: mooncake-store labels: app: mooncake-store spec: clusterIP: None selector: app: mooncake-store ports: - name: store port: 50054 targetPort: 50054 --- # ========================================================= # mooncake-store DaemonSet # ========================================================= apiVersion: apps/v1 kind: DaemonSet metadata: name: mooncake-store labels: app: mooncake-store spec: selector: matchLabels: app: mooncake-store template: metadata: labels: app: mooncake-store spec: # 只运行在 dev17 / dev19 nodeSelector: mooncake-store: "true" # 等待 master 就绪(强烈推荐) # initContainers: # - name: wait-for-master # image: busybox:1.36 # command: # - sh # - -c # - | # until nc -z mooncake-master 50051; do # echo "waiting for mooncake-master..."; # sleep 2; # done containers: - name: store image: harbor.transwarp.io/aip/sglang:glm5-hopper imagePullPolicy: IfNotPresent command: - mooncake_client args: - --host="0.0.0.0" - --global_segment_size="80GB" - --metadata_server="http://mooncake-master:8080/metadata" - --enable_offload=true - --port=50054 - --master_server_address="mooncake-master:50051" - --protocol="tcp" env: # - name: MOONCAKE_MASTER # value: "mooncake-master:50051" # - name: MOONCAKE_TE_META_DATA_SERVER # value: "http://mooncake-master:8080/metadata" # - name: MOONCAKE_PROTOCOL # value: "rdma" # - name: MOONCAKE_DEVICE # value: "" # - name: MOONCAKE_GLOBAL_SEGMENT_SIZE # value: "200gb" # - name: MOONCAKE_LOCAL_BUFFER_SIZE # value: "0" - name: MOONCAKE_OFFLOAD_FILE_STORAGE_PATH value: "/data/mooncache" - name: MOONCAKE_OFFLOAD_LOCAL_BUFFER_SIZE_BYTES value: "1099511627776" resources: requests: memory: "210Gi" rdma/hca_shared_devices_a: 1 limits: memory: "210Gi" rdma/hca_shared_devices_a: 1 securityContext: capabilities: add: - IPC_LOCK volumeMounts: - mountPath: /dev/shm name: dshm - name: nfs-vol mountPath: /data/mooncache volumes: - name: dshm emptyDir: medium: Memory sizeLimit: 50Gi - name: nfs-vol nfs: server: 172.17.124.39 # ← 这里换成你的 NFS 服务器 IP path: /mnt/disk2/models/kv_cache # ← 这里换成你 NFS 上共享的目录 readOnly: false ``` real client连不上mooncake master 退出了 ``` I0304 06:04:19.363355 7 client_service.cpp:59] Client metrics enabled but reporting disabled (interval=0) 2026-03-04 06:04:19.364135 WARNING [35] [coro_rpc_client.hpp:964] client_id 43 async_resolve failed:Service not found 2026-03-04 06:04:20.364658 WARNING [35] [coro_rpc_client.hpp:964] client_id 43 async_resolve failed:Service not found 2026-03-04 06:04:21.391316 WARNING [35] [coro_rpc_client.hpp:964] client_id 43 async_resolve failed:Service not found 2026-03-04 06:04:22.542813 WARNING [35] [coro_rpc_client.hpp:964] client_id 43 async_resolve failed:Service not found 2026-03-04 06:04:23.633890 WARNING [35] [client_pool.hpp:207] reconnect client{0x563c094515e0},host:{"mooncake-master:50051"} out of max limit, stop retry. connect failed E0304 06:04:23.634300 35 master_client.cpp:234] Client not available 2026-03-04 06:04:23.634284 WARNING [35] [client_pool.hpp:445] send request to "mooncake-master:50051" failed. connection refused. 2026-03-04 06:04:23.634803 WARNING [36] [coro_rpc_client.hpp:964] client_id 43 async_resolve failed:Service not found W0304 06:04:23.634824 7 real_client.cpp:232] Failed to create client on port 12431, retry 7/20 I0304 06:04:23.735044 7 client_metric.cpp:80] Client metrics enabled (default enabled) I0304 06:04:23.736239 7 ha_helper.cpp:20] Master view key: mooncake-store/mooncake/master_view I0304 06:04:23.736250 7 client_service.cpp:51] client_id=18310961376926466-14923634240217995155 I0304 06:04:23.736258 7 client_service.cpp:59] Client metrics enabled but reporting disabled (interval=0) 2026-03-04 06:04:23.736945 WARNING [37] [coro_rpc_client.hpp:964] client_id 50 async_resolve failed:Service not found 2026-03-04 06:04:24.737409 WARNING [37] [coro_rpc_client.hpp:964] client_id 50 async_resolve failed:Service not found 2026-03-04 06:04:25.763888 WARNING [37] [coro_rpc_client.hpp:964] client_id 50 async_resolve failed:Service not found 2026-03-04 06:04:26.915382 WARNING [37] [coro_rpc_client.hpp:964] client_id 50 async_resolve failed:Service not found ```
Author
Owner

@ykwd commented on GitHub (Mar 4, 2026):

@zhaotyer 看起来应该是client和master之间的rpc通信没连上。可能的原因:

  • 命名空间不一致:store 和 master 不在同一 namespace,导致 mooncake-master 无法解析
  • 启动顺序:store 先于 master 启动,且未使用 wait-for-master
<!-- gh-comment-id:3995658566 --> @ykwd commented on GitHub (Mar 4, 2026): @zhaotyer 看起来应该是client和master之间的rpc通信没连上。可能的原因: - 命名空间不一致:store 和 master 不在同一 namespace,导致 mooncake-master 无法解析 - 启动顺序:store 先于 master 启动,且未使用 wait-for-master
Author
Owner

@zhaotyer commented on GitHub (Mar 4, 2026):

@zhaotyer 看起来应该是client和master之间的rpc通信没连上。可能的原因:

  • 命名空间不一致:store 和 master 不在同一 namespace,导致 mooncake-master 无法解析
  • 启动顺序:store 先于 master 启动,且未使用 wait-for-master

都在default namespace,我先启动的master,在store容器内curl mooncake-master:9003/metrics/summary能获取内容

<!-- gh-comment-id:3995670314 --> @zhaotyer commented on GitHub (Mar 4, 2026): > [@zhaotyer](https://github.com/zhaotyer) 看起来应该是client和master之间的rpc通信没连上。可能的原因: > > * 命名空间不一致:store 和 master 不在同一 namespace,导致 mooncake-master 无法解析 > * 启动顺序:store 先于 master 启动,且未使用 wait-for-master 都在default namespace,我先启动的master,在store容器内curl mooncake-master:9003/metrics/summary能获取内容
Author
Owner

@ykwd commented on GitHub (Mar 4, 2026):

2026-03-04 06:04:23.634284 WARNING [35] [client_pool.hpp:445] send request to "mooncake-master:50051" failed. connection refused.

唔,那我就没啥思路了。从日志来看确实是client连不上master

<!-- gh-comment-id:3996062847 --> @ykwd commented on GitHub (Mar 4, 2026): > 2026-03-04 06:04:23.634284 WARNING [35] [client_pool.hpp:445] send request to "mooncake-master:50051" failed. connection refused. 唔,那我就没啥思路了。从日志来看确实是client连不上master
Author
Owner

@ykwd commented on GitHub (Mar 4, 2026):

问了下ai,它的回答如下:

你之前看到的 async_resolve failed:Service not found 来自 DNS 解析失败,而不是地址格式不支持。常见原因包括:
mooncake-master 在 store 所在 namespace 下无法解析(例如跨 namespace 未用 FQDN)
集群 DNS(如 CoreDNS)异常
网络策略或环境限制导致 DNS 不可用

要不换成ip试下?

<!-- gh-comment-id:3996171977 --> @ykwd commented on GitHub (Mar 4, 2026): 问了下ai,它的回答如下: > 你之前看到的 async_resolve failed:Service not found 来自 DNS 解析失败,而不是地址格式不支持。常见原因包括: > mooncake-master 在 store 所在 namespace 下无法解析(例如跨 namespace 未用 FQDN) > 集群 DNS(如 CoreDNS)异常 > 网络策略或环境限制导致 DNS 不可用 要不换成ip试下?
Author
Owner

@zhaotyer commented on GitHub (Mar 6, 2026):

问了下ai,它的回答如下:

你之前看到的 async_resolve failed:Service not found 来自 DNS 解析失败,而不是地址格式不支持。常见原因包括:
mooncake-master 在 store 所在 namespace 下无法解析(例如跨 namespace 未用 FQDN)
集群 DNS(如 CoreDNS)异常
网络策略或环境限制导致 DNS 不可用

要不换成ip试下?

现在real client能连上mooncake master了,但是sglang连不上real client,怀疑是mooncake_client硬编码监听在127.0.0.1的问题

Image real client这种不太符合kv cache中心化管理,希望能优先解决mooncake_store使用disk爆炸问题
<!-- gh-comment-id:4009333897 --> @zhaotyer commented on GitHub (Mar 6, 2026): > 问了下ai,它的回答如下: > > > 你之前看到的 async_resolve failed:Service not found 来自 DNS 解析失败,而不是地址格式不支持。常见原因包括: > > mooncake-master 在 store 所在 namespace 下无法解析(例如跨 namespace 未用 FQDN) > > 集群 DNS(如 CoreDNS)异常 > > 网络策略或环境限制导致 DNS 不可用 > > 要不换成ip试下? 现在real client能连上mooncake master了,但是sglang连不上real client,怀疑是mooncake_client硬编码监听在127.0.0.1的问题 <img width="1223" height="664" alt="Image" src="https://github.com/user-attachments/assets/1a0ef934-d9ea-4fe6-a446-92861d284255" /> real client这种不太符合kv cache中心化管理,希望能优先解决mooncake_store使用disk爆炸问题
Author
Owner

@zhaotyer commented on GitHub (Mar 6, 2026):

问了下ai,它的回答如下:

你之前看到的 async_resolve failed:Service not found 来自 DNS 解析失败,而不是地址格式不支持。常见原因包括:
mooncake-master 在 store 所在 namespace 下无法解析(例如跨 namespace 未用 FQDN)
集群 DNS(如 CoreDNS)异常
网络策略或环境限制导致 DNS 不可用

要不换成ip试下?

现在real client能连上mooncake master了,但是sglang连不上real client,怀疑是mooncake_client硬编码监听在127.0.0.1的问题

Image real client这种不太符合kv cache中心化管理,希望能优先解决mooncake_store使用disk爆炸问题

主要是这边mooncake master+mooncake store部署服务后采用sglang/vllm测试是能正常采用CPU MEM作为kv cache的,能修复disk就完美了 -_-

<!-- gh-comment-id:4009361128 --> @zhaotyer commented on GitHub (Mar 6, 2026): > > 问了下ai,它的回答如下: > > > 你之前看到的 async_resolve failed:Service not found 来自 DNS 解析失败,而不是地址格式不支持。常见原因包括: > > > mooncake-master 在 store 所在 namespace 下无法解析(例如跨 namespace 未用 FQDN) > > > 集群 DNS(如 CoreDNS)异常 > > > 网络策略或环境限制导致 DNS 不可用 > > > > > > 要不换成ip试下? > > 现在real client能连上mooncake master了,但是sglang连不上real client,怀疑是mooncake_client硬编码监听在127.0.0.1的问题 > > <img alt="Image" width="1223" height="664" src="https://private-user-images.githubusercontent.com/89376832/559088878-1a0ef934-d9ea-4fe6-a446-92861d284255.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzI3Njg2MDYsIm5iZiI6MTc3Mjc2ODMwNiwicGF0aCI6Ii84OTM3NjgzMi81NTkwODg4NzgtMWEwZWY5MzQtZDllYS00ZmU2LWE0NDYtOTI4NjFkMjg0MjU1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjAzMDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwMzA2VDAzMzgyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAzNDBiOTg3NTJkNmUyZWI1YzYwNDUwNmE2YmRiZDM1YzhhZWM0MGVhOWY4ZTUwZTU1MDg1M2QyM2QzNGRjM2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.-dBwdwNYcbpEJZqHMfQVmY0nK30aZxHZU1Oj5RbHO8E"> real client这种不太符合kv cache中心化管理,希望能优先解决mooncake_store使用disk爆炸问题 主要是这边mooncake master+mooncake store部署服务后采用sglang/vllm测试是能正常采用CPU MEM作为kv cache的,能修复disk就完美了 -_-
Author
Owner

@zhaotyer commented on GitHub (Mar 9, 2026):

问了下ai,它的回答如下:

你之前看到的 async_resolve failed:Service not found 来自 DNS 解析失败,而不是地址格式不支持。常见原因包括:
mooncake-master 在 store 所在 namespace 下无法解析(例如跨 namespace 未用 FQDN)
集群 DNS(如 CoreDNS)异常
网络策略或环境限制导致 DNS 不可用

要不换成ip试下?

现在real client能连上mooncake master了,但是sglang连不上real client,怀疑是mooncake_client硬编码监听在127.0.0.1的问题

Image real client这种不太符合kv cache中心化管理,希望能优先解决mooncake_store使用disk爆炸问题

@ykwd

<!-- gh-comment-id:4023438849 --> @zhaotyer commented on GitHub (Mar 9, 2026): > > 问了下ai,它的回答如下: > > > 你之前看到的 async_resolve failed:Service not found 来自 DNS 解析失败,而不是地址格式不支持。常见原因包括: > > > mooncake-master 在 store 所在 namespace 下无法解析(例如跨 namespace 未用 FQDN) > > > 集群 DNS(如 CoreDNS)异常 > > > 网络策略或环境限制导致 DNS 不可用 > > > > > > 要不换成ip试下? > > 现在real client能连上mooncake master了,但是sglang连不上real client,怀疑是mooncake_client硬编码监听在127.0.0.1的问题 > > <img alt="Image" width="1223" height="664" src="https://private-user-images.githubusercontent.com/89376832/559088878-1a0ef934-d9ea-4fe6-a446-92861d284255.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzMwNTk5MTAsIm5iZiI6MTc3MzA1OTYxMCwicGF0aCI6Ii84OTM3NjgzMi81NTkwODg4NzgtMWEwZWY5MzQtZDllYS00ZmU2LWE0NDYtOTI4NjFkMjg0MjU1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjAzMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwMzA5VDEyMzMzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQyZjQzZTY3Mzg3MjUxNjc4ZDFmMzdlZTk3MDkzZmY1Nzk2Y2ZkMmQ5OWUwMjMzMzllMDMzYmY4OWUzZGM3ZWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.IfqLvUYHRDe-1XSbrfAN1jd1HS4NzSHdPeM_9pm8LGs"> real client这种不太符合kv cache中心化管理,希望能优先解决mooncake_store使用disk爆炸问题 @ykwd
Author
Owner

@DaZhUUU commented on GitHub (Mar 30, 2026):

好的,感谢大佬,这个real client看启动命令,也负责把一部分mem/disk资源注册到master吗?,只有与他相连的dummy-client才能使用这部分资源?如果real-client不注册资源,real-client能否使用store service注册的资源

对。准确说这里的real client就等于普通的模式的client。普通模式是每个sglang rank内嵌了一个mooncake store client,每个client都会注册一部分memory到共享内存池中。dummy-real client模式中,每个rank内嵌的client不再持有资源,只由这些client共享的一个real client持有并注册memory。

可以参考这个文档中对于global segment的解释:https://kvcache-ai.github.io/Mooncake/getting_started/examples/sglang-integration/hicache-integration-v1.html#single-server-deployment

@ykwd 请问两个问题

  1. 这种 dummy-real client模式 和 我在master节点分配0或者少量GB的global_segment_size,另外找一个内存节点只启动mooncake_store_service服务提供大量内存 有什么区别。因为当前我是这么使用的。
  2. master当前必须在sglang服务的节点启动吗?不能在另外的服务器上启动吗?因为当前看文档没看到强约束说明,
<!-- gh-comment-id:4153273611 --> @DaZhUUU commented on GitHub (Mar 30, 2026): > > 好的,感谢大佬,这个real client看启动命令,也负责把一部分mem/disk资源注册到master吗?,只有与他相连的dummy-client才能使用这部分资源?如果real-client不注册资源,real-client能否使用store service注册的资源 > > 对。准确说这里的real client就等于普通的模式的client。普通模式是每个sglang rank内嵌了一个mooncake store client,每个client都会注册一部分memory到共享内存池中。dummy-real client模式中,每个rank内嵌的client不再持有资源,只由这些client共享的一个real client持有并注册memory。 > > 可以参考这个文档中对于global segment的解释:https://kvcache-ai.github.io/Mooncake/getting_started/examples/sglang-integration/hicache-integration-v1.html#single-server-deployment @ykwd 请问两个问题 1. 这种 dummy-real client模式 和 我在master节点分配0或者少量GB的global_segment_size,另外找一个内存节点只启动mooncake_store_service服务提供大量内存 有什么区别。因为当前我是这么使用的。 2. master当前必须在sglang服务的节点启动吗?不能在另外的服务器上启动吗?因为当前看文档没看到强约束说明,
Author
Owner

@ykwd commented on GitHub (Mar 30, 2026):

@ykwd 请问两个问题

  1. 这种 dummy-real client模式 和 我在master节点分配0或者少量GB的global_segment_size,另外找一个内存节点只启动mooncake_store_service服务提供大量内存 有什么区别。因为当前我是这么使用的。
  2. master当前必须在sglang服务的节点启动吗?不能在另外的服务器上启动吗?因为当前看文档没看到强约束说明,

你好。对于问题1,我没有太看懂,master本身是不存储具体的数据的,只存储元数据,也没有global_segment_size的选项。
对于问题2. mooncake的分布式部署方案很灵活,master, store service, client 等都可以放在不同的地方,没有限制(前提是网络是通的)

如果是在分布式的环境里使用sglang hicache,我可以给一个简单的部署方案供参考:

sglang里启动命令里的global_segment_size设置为0,然后每个可以贡献内存/外存给Mooncake的节点里启动一个store service,将global segment size配置为需要共享出来的内存大小。然后在任意一个节点上启动master(或者用高可用模式,在3个节点上各启动一个master)

如果要用dummy-real方式部署的话,可以将上述方案中每个prefill节点的store service改为real client。其他地方保持不变。和上述方案的区别是sglang读取本地real client的数据会更快一点。

<!-- gh-comment-id:4153509338 --> @ykwd commented on GitHub (Mar 30, 2026): > [@ykwd](https://github.com/ykwd) 请问两个问题 > > 1. 这种 dummy-real client模式 和 我在master节点分配0或者少量GB的global_segment_size,另外找一个内存节点只启动mooncake_store_service服务提供大量内存 有什么区别。因为当前我是这么使用的。 > 2. master当前必须在sglang服务的节点启动吗?不能在另外的服务器上启动吗?因为当前看文档没看到强约束说明, 你好。对于问题1,我没有太看懂,master本身是不存储具体的数据的,只存储元数据,也没有global_segment_size的选项。 对于问题2. mooncake的分布式部署方案很灵活,master, store service, client 等都可以放在不同的地方,没有限制(前提是网络是通的) 如果是在分布式的环境里使用sglang hicache,我可以给一个简单的部署方案供参考: sglang里启动命令里的global_segment_size设置为0,然后每个可以贡献内存/外存给Mooncake的节点里启动一个store service,将global segment size配置为需要共享出来的内存大小。然后在任意一个节点上启动master(或者用高可用模式,在3个节点上各启动一个master) 如果要用dummy-real方式部署的话,可以将上述方案中每个prefill节点的store service改为real client。其他地方保持不变。和上述方案的区别是sglang读取本地real client的数据会更快一点。
Author
Owner

@DaZhUUU commented on GitHub (Mar 30, 2026):

@ykwd 请问两个问题

  1. 这种 dummy-real client模式 和 我在master节点分配0或者少量GB的global_segment_size,另外找一个内存节点只启动mooncake_store_service服务提供大量内存 有什么区别。因为当前我是这么使用的。
  2. master当前必须在sglang服务的节点启动吗?不能在另外的服务器上启动吗?因为当前看文档没看到强约束说明,

你好。对于问题1,我没有太看懂,master本身是不存储具体的数据的,只存储元数据,也没有global_segment_size的选项。 对于问题2. mooncake的分布式部署方案很灵活,master, store service, client 等都可以放在不同的地方,没有限制(前提是网络是通的)

如果是在分布式的环境里使用sglang hicache,我可以给一个简单的部署方案供参考:

sglang里启动命令里的global_segment_size设置为0,然后每个可以贡献内存/外存给Mooncake的节点里启动一个store service,将global segment size配置为需要共享出来的内存大小。然后在任意一个节点上启动master(或者用高可用模式,在3个节点上各启动一个master)

如果要用dummy-real方式部署的话,可以将上述方案中每个prefill节点的store service改为real client。其他地方保持不变。和上述方案的区别是sglang读取本地real client的数据会更快一点。

@ykwd 十分感谢!
那您推荐的配置中,sglang启动如果有global_segment_size,读取本地store的内存会更快吗?
因为这里对Embedded模式的这句话不太理解:Runs in the same process as the LLM inference program。store不是跟sglang独立的吗
还有就是,高可用我看标注是unstable原因是啥?这个特性还有问题吗?以及dummy clien也是实验特性,都是存在一些问题吗?

<!-- gh-comment-id:4153617073 --> @DaZhUUU commented on GitHub (Mar 30, 2026): > > [@ykwd](https://github.com/ykwd) 请问两个问题 > > > > 1. 这种 dummy-real client模式 和 我在master节点分配0或者少量GB的global_segment_size,另外找一个内存节点只启动mooncake_store_service服务提供大量内存 有什么区别。因为当前我是这么使用的。 > > 2. master当前必须在sglang服务的节点启动吗?不能在另外的服务器上启动吗?因为当前看文档没看到强约束说明, > > 你好。对于问题1,我没有太看懂,master本身是不存储具体的数据的,只存储元数据,也没有global_segment_size的选项。 对于问题2. mooncake的分布式部署方案很灵活,master, store service, client 等都可以放在不同的地方,没有限制(前提是网络是通的) > > 如果是在分布式的环境里使用sglang hicache,我可以给一个简单的部署方案供参考: > > sglang里启动命令里的global_segment_size设置为0,然后每个可以贡献内存/外存给Mooncake的节点里启动一个store service,将global segment size配置为需要共享出来的内存大小。然后在任意一个节点上启动master(或者用高可用模式,在3个节点上各启动一个master) > > 如果要用dummy-real方式部署的话,可以将上述方案中每个prefill节点的store service改为real client。其他地方保持不变。和上述方案的区别是sglang读取本地real client的数据会更快一点。 @ykwd 十分感谢! 那您推荐的配置中,sglang启动如果有global_segment_size,读取本地store的内存会更快吗? 因为这里对Embedded模式的这句话不太理解:Runs in the same process as the LLM inference program。store不是跟sglang独立的吗 还有就是,高可用我看标注是unstable原因是啥?这个特性还有问题吗?以及dummy clien也是实验特性,都是存在一些问题吗?
Author
Owner

@github-actions[bot] commented on GitHub (Jun 29, 2026):

This issue has had no activity for 90 days and will be closed in 7 days if there is no further activity. Please comment or react if it should stay open.

<!-- gh-comment-id:4829074349 --> @github-actions[bot] commented on GitHub (Jun 29, 2026): This issue has had no activity for 90 days and will be closed in 7 days if there is no further activity. Please comment or react if it should stay open.
Author
Owner

@mjwtom commented on GitHub (Jul 2, 2026):

2.现在mooncake master 的--root_fs_dir是不是不需要了,感觉这种设计破环了中心化设计(有master统一管理)

确实。新版本的技术方案里没有用到这个了。等到删除旧方案代码的时候可以一并删除。现在的问题我感觉更多的是缺少使用新方案实现的方法文档,这块 @zhangzuo21 会帮忙补上。新方案目前还缺少ssd数据满了evict的功能(这个功能的pr正在review中),等这个功能完成后,感觉共享外存的feature的拼图就完成了。

请问一下,后续版本确定会去掉root_fs_dir这个配置吗?我们后面会对接分布式存储,如果确定会去掉这个配置,我们后面转向SSD Offload的方式接入,感谢

<!-- gh-comment-id:4861553758 --> @mjwtom commented on GitHub (Jul 2, 2026): > > 2.现在mooncake master 的--root_fs_dir是不是不需要了,感觉这种设计破环了中心化设计(有master统一管理) > > 确实。新版本的技术方案里没有用到这个了。等到删除旧方案代码的时候可以一并删除。现在的问题我感觉更多的是缺少使用新方案实现的方法文档,这块 [@zhangzuo21](https://github.com/zhangzuo21) 会帮忙补上。新方案目前还缺少ssd数据满了evict的功能(这个功能的pr正在review中),等这个功能完成后,感觉共享外存的feature的拼图就完成了。 请问一下,后续版本确定会去掉root_fs_dir这个配置吗?我们后面会对接分布式存储,如果确定会去掉这个配置,我们后面转向SSD Offload的方式接入,感谢
Author
Owner

@fcczzz commented on GitHub (Jul 2, 2026):

2.现在mooncake master 的--root_fs_dir是不是不需要了,感觉这种设计破环了中心化设计(有master统一管理)

确实。新版本的技术方案里没有用到这个了。等到删除旧方案代码的时候可以一并删除。现在的问题我感觉更多的是缺少使用新方案实现的方法文档,这块 @zhangzuo21 会帮忙补上。新方案目前还缺少ssd数据满了evict的功能(这个功能的pr正在review中),等这个功能完成后,感觉共享外存的feature的拼图就完成了。

请问一下,后续版本确定会去掉root_fs_dir这个配置吗?我们后面会对接分布式存储,如果确定会去掉这个配置,我们后面转向SSD Offload的方式接入,感谢

是的,从目前新方案的设计来看,master --root_fs_dir 不再是共享外存/DFS 方案依赖的配置。
目前我们主要在支持local SSD offloading的实现:Master 负责 offload 任务调度和 LOCAL_DISK replica 元数据管理,实际数据由各个 FileStorage 写到本机 SSD。

关于分布式存储,最近我们也在基于这套 offload 路径开发和优化分布式文件系统支持(#2683 目前还在 draft,近期会继续完善),即通过新的 DFS / DistributedStorageBackend 配置接入。这个新方案里 Master 主要负责元数据、DFS offset 分配、offload 队列和 evict 回调,实际数据写入由 FileStorage / Offload backend 完成。

因此后续新方案里不会建议继续依赖 root_fs_dir。它目前主要是为了兼容旧的分层缓存路径,等旧方案代码清理时会一起废弃/删除。后续如果要对接分布式存储,建议按 SSD Offload / distributed_storage_backend 接入

<!-- gh-comment-id:4861777754 --> @fcczzz commented on GitHub (Jul 2, 2026): > > > 2.现在mooncake master 的--root_fs_dir是不是不需要了,感觉这种设计破环了中心化设计(有master统一管理) > > > > > > 确实。新版本的技术方案里没有用到这个了。等到删除旧方案代码的时候可以一并删除。现在的问题我感觉更多的是缺少使用新方案实现的方法文档,这块 [@zhangzuo21](https://github.com/zhangzuo21) 会帮忙补上。新方案目前还缺少ssd数据满了evict的功能(这个功能的pr正在review中),等这个功能完成后,感觉共享外存的feature的拼图就完成了。 > > 请问一下,后续版本确定会去掉root_fs_dir这个配置吗?我们后面会对接分布式存储,如果确定会去掉这个配置,我们后面转向SSD Offload的方式接入,感谢 是的,从目前新方案的设计来看,master --root_fs_dir 不再是共享外存/DFS 方案依赖的配置。 目前我们主要在支持local SSD offloading的实现:Master 负责 offload 任务调度和 LOCAL_DISK replica 元数据管理,实际数据由各个 FileStorage 写到本机 SSD。 关于分布式存储,最近我们也在基于这套 offload 路径开发和优化分布式文件系统支持([#2683](https://github.com/kvcache-ai/Mooncake/pull/2683) 目前还在 draft,近期会继续完善),即通过新的 DFS / DistributedStorageBackend 配置接入。这个新方案里 Master 主要负责元数据、DFS offset 分配、offload 队列和 evict 回调,实际数据写入由 FileStorage / Offload backend 完成。 因此后续新方案里不会建议继续依赖 root_fs_dir。它目前主要是为了兼容旧的分层缓存路径,等旧方案代码清理时会一起废弃/删除。后续如果要对接分布式存储,建议按 SSD Offload / distributed_storage_backend 接入
Author
Owner

@mjwtom commented on GitHub (Jul 2, 2026):

2.现在mooncake master 的--root_fs_dir是不是不需要了,感觉这种设计破环了中心化设计(有master统一管理)

确实。新版本的技术方案里没有用到这个了。等到删除旧方案代码的时候可以一并删除。现在的问题我感觉更多的是缺少使用新方案实现的方法文档,这块 @zhangzuo21 会帮忙补上。新方案目前还缺少ssd数据满了evict的功能(这个功能的pr正在review中),等这个功能完成后,感觉共享外存的feature的拼图就完成了。

请问一下,后续版本确定会去掉root_fs_dir这个配置吗?我们后面会对接分布式存储,如果确定会去掉这个配置,我们后面转向SSD Offload的方式接入,感谢

是的,从目前新方案的设计来看,master --root_fs_dir 不再是共享外存/DFS 方案依赖的配置。 目前我们主要在支持local SSD offloading的实现:Master 负责 offload 任务调度和 LOCAL_DISK replica 元数据管理,实际数据由各个 FileStorage 写到本机 SSD。

关于分布式存储,最近我们也在基于这套 offload 路径开发和优化分布式文件系统支持(#2683 目前还在 draft,近期会继续完善),即通过新的 DFS / DistributedStorageBackend 配置接入。这个新方案里 Master 主要负责元数据、DFS offset 分配、offload 队列和 evict 回调,实际数据写入由 FileStorage / Offload backend 完成。

因此后续新方案里不会建议继续依赖 root_fs_dir。它目前主要是为了兼容旧的分层缓存路径,等旧方案代码清理时会一起废弃/删除。后续如果要对接分布式存储,建议按 SSD Offload / distributed_storage_backend 接入

感谢回复

<!-- gh-comment-id:4866491942 --> @mjwtom commented on GitHub (Jul 2, 2026): > > > > 2.现在mooncake master 的--root_fs_dir是不是不需要了,感觉这种设计破环了中心化设计(有master统一管理) > > > > > > > > > 确实。新版本的技术方案里没有用到这个了。等到删除旧方案代码的时候可以一并删除。现在的问题我感觉更多的是缺少使用新方案实现的方法文档,这块 [@zhangzuo21](https://github.com/zhangzuo21) 会帮忙补上。新方案目前还缺少ssd数据满了evict的功能(这个功能的pr正在review中),等这个功能完成后,感觉共享外存的feature的拼图就完成了。 > > > > > > 请问一下,后续版本确定会去掉root_fs_dir这个配置吗?我们后面会对接分布式存储,如果确定会去掉这个配置,我们后面转向SSD Offload的方式接入,感谢 > > 是的,从目前新方案的设计来看,master --root_fs_dir 不再是共享外存/DFS 方案依赖的配置。 目前我们主要在支持local SSD offloading的实现:Master 负责 offload 任务调度和 LOCAL_DISK replica 元数据管理,实际数据由各个 FileStorage 写到本机 SSD。 > > 关于分布式存储,最近我们也在基于这套 offload 路径开发和优化分布式文件系统支持([#2683](https://github.com/kvcache-ai/Mooncake/pull/2683) 目前还在 draft,近期会继续完善),即通过新的 DFS / DistributedStorageBackend 配置接入。这个新方案里 Master 主要负责元数据、DFS offset 分配、offload 队列和 evict 回调,实际数据写入由 FileStorage / Offload backend 完成。 > > 因此后续新方案里不会建议继续依赖 root_fs_dir。它目前主要是为了兼容旧的分层缓存路径,等旧方案代码清理时会一起废弃/删除。后续如果要对接分布式存储,建议按 SSD Offload / distributed_storage_backend 接入 感谢回复
Author
Owner

@github-actions[bot] commented on GitHub (Oct 1, 2026):

This issue has had no activity for 90 days and will be closed in 7 days if there is no further activity. Please comment or react if it should stay open.

<!-- gh-comment-id:5924047589 --> @github-actions[bot] commented on GitHub (Oct 1, 2026): This issue has had no activity for 90 days and will be closed in 7 days if there is no further activity. Please comment or react if it should stay open.
Author
Owner

@github-actions[bot] commented on GitHub (Oct 8, 2026):

Closing due to 3 months of inactivity. If this is still relevant, please comment and we can reopen.

<!-- gh-comment-id:6051522271 --> @github-actions[bot] commented on GitHub (Oct 8, 2026): Closing due to 3 months of inactivity. If this is still relevant, please comment and we can reopen.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kvcache-ai/Mooncake#405
No description provided.