네. 다시 확인해 보니 그 지적은 맞습니다. 특히 Stage3a10의 remote_obj를 MemKV 성능이라고 해석하면 안 됩니다. 현재 문서/테스트 정의를 정정하는 게 좋습니다.
현재 MemKV 공식 문서를 확인하면 데이터 plane 기본 endpoint는 host:9900이고, 자체 wire protocol과 HMAC-SHA256 인증을 사용합니다. Admin HTTP endpoint는 기본적으로 data port + 1인 9901입니다. TCP와 RDMA가 같은 MemKV 프로토콜을 운반합니다. MinIO AIStor Documentation
즉 이것은:
http://memkv-node:9000
같은 S3-compatible endpoint가 아닙니다.
실제 MemKV client 설정은 이런 개념입니다.
MEMKV_SERVERS=10.x.x.x:9900
MEMKV_AUTH_KEY=...
MEMKV_LICENSE=...
그리고 vLLM과 MemKV를 직접 연결할 때 공식 문서에는 memkv-vllm plugin을 설치하여 native KV offloading/tiering에 붙이는 방식이 나옵니다. MinIO AIStor Documentation
따라서 기존 문서가
remote_obj
↓
http://memkv-node:9000
↓
S3-compatible
처럼 기술했다면 MemKV 설명으로는 잘못된 것입니다.
remote_obj는 사실상 Object Storage 테스트로 보는 게 맞습니다현재 v12/v13 계보에서 Stage3a10을 제가 만들 때도:
none
local_nvme
remote_obj
로 추상화했고 remote_obj는 TieringOffloadingSpec의 object secondary tier를 사용하도록 구성했습니다.
따라서 의미상:
remote_obj
↓
S3/Object Storage
↓
MinIO / AIStor
테스트입니다.
즉 결과표에
MemKV remote tier 성능
이라고 쓰면 안 되고,
Remote Object Storage KV tier (MinIO/AIStor)
라고 쓰는 게 정확합니다.
현재 사용자 환경에서 MinIO/AIStor가 Storage Cluster에 있으므로 더 명확하게:
Stage3a10-C
Remote Object KV Tier
AIStor / MinIO
S3 API over TCP/TLS
로 이름을 바꾸는 것을 권합니다.
공식 문서 기준으로 현재 MemKV와 vLLM 연결 방법은 적어도 구분해야 합니다.
가장 직접적인 것은:
vLLM
│
│ native OffloadingConnector
▼
TieringOffloadingSpec
│
│ memkv-vllm plugin
▼
MemKV tier
│
├─ TCP
└─ RDMA
입니다.
공식 MemKV 문서도 이 경로를 vLLM native offloading + MemKV라고 별도로 설명하고 있으며, CPU pinned pool 뒤의 secondary tier로 MemKV를 사용합니다. MinIO AIStor Documentation
또 다른 경로는:
vLLM
↓
LMCache
↓
MemKV plugin
↓
MemKV
입니다.
그리고 direct offloading 경로도 존재합니다.
vLLM
↓
MemKVOffloadingSpec
↓
MemKV
다만 direct 경로는 공식 문서상 RDMA NIC가 필수이고 TCP fallback이 없습니다. MinIO AIStor Documentation
따라서 acceptance test에서 세 가지를 섞으면 안 됩니다.
현재:
Stage3a10
none
local_nvme
remote_obj
에서 앞으로는:
Stage3a10 — KV Tier Qualification
A. none
GPU HBM only
B. local_nvme
GPU
↓
CPU/offload
↓
Local NVMe
C. remote_object
GPU
↓
CPU/offload
↓
AIStor/MinIO
S3/TCP/TLS
D. memkv_tcp
GPU
↓
vLLM native offloading
↓
memkv-vllm
↓
MemKV :9900
TCP
E. memkv_rdma
GPU
↓
vLLM native/direct offloading
↓
memkv-vllm
↓
MemKV :9900
RDMA
로 분리하는 것이 가장 명확합니다.
그리고 현재 환경에서는 D까지만 실행 가능합니다.
A none → 실행 가능
B local_nvme → 실행 가능
C remote_object → 실행 가능
D memkv_tcp → MemKV 설치 시 실행 가능
E memkv_rdma → 현재 N/A
현재 GPU node에 RDMA가 없기 때문입니다.
MemKV 공식 Quick Start 문서에서 97.4 GB/s가 benchmark된 구성은 distributed full server의 RDMA/NVMe/JBOF performance path입니다. TCP-only single-node/file-mode 구성과 같은 의미의 숫자가 아닙니다. MinIO AIStor Documentation
따라서 현재 환경에서:
GPU node
│
Ethernet TCP/IP
│
MemKV
를 측정해서:
97 GB/s expected
같은 acceptance threshold를 적용하면 잘못된 비교가 됩니다.
오히려 테스트 결과서에는 다음처럼 명시하는 게 맞습니다.
MemKV TCP result is not compared against vendor RDMA performance figures. It establishes a site-specific TCP baseline only.
이 부분은 상당히 중요합니다.
공식 native offloading + MemKV 문서에서는 RDMA fast path가 없으면 TCP로 동작할 수 있다고 명시합니다. MinIO AIStor Documentation
따라서 현재 환경에서도 MemKV 자체를 시험할 수는 있습니다.
B300
│
vLLM 0.30
│
OffloadingConnector
│
TieringOffloadingSpec
│
memkv-vllm
│
TCP
▼
MemKV
다만 이것을:
MemKV 성능 qualification
이라고 하기보다는:
MemKV TCP baseline qualification
으로 분류하는 게 좋습니다.
향후 RDMA가 들어오면 동일 workload를 다시:
MemKV TCP
vs
MemKV RDMA
로 비교하면 됩니다.
이것도 그냥 넘어가면 안 됩니다.
MemKV 공식 native-tiering 문서는 현재 해당 plugin이 여러 vLLM 버전에서 확인됐다고 설명하지만, offloading spec API 자체가 experimental임을 명시하고 있습니다. MinIO AIStor Documentation
우리는:
vLLM 0.30.0
을 production standard로 잡았기 때문에 Stage3a10-D를 실행하기 전에:
vLLM 0.30.0
+
memkv-vllm plugin version
+
OffloadingConnector
+
TieringOffloadingSpec
+
memkv tier
조합을 별도의 compatibility gate로 확인하는 것이 맞습니다.
즉:
Stage3a10-D0
MemKV Integration Preflight
vLLM == 0.30.0
memkv-vllm installed
plugin registration OK
MemKV :9900 reachable
HMAC auth OK
transport = tcp
tier initialization OK
↓ PASS
Stage3a10-D1
MemKV TCP functional test
↓ PASS
Stage3a10-D2
MemKV TCP performance test
순서가 좋습니다.
그리고 기존 Stage3a10의 또 다른 문제와 연결됩니다.
none
local_nvme
remote_object
memkv_tcp
를 비교할 때 서로 다른 random prompt를 사용하면 안 됩니다.
동일한:
fixed dataset
fixed random seed
same model
same TP
same dtype
same max_model_len
same concurrency
same input/output length
same prefix reuse
same CPU pool
조건이어야 합니다.
그 상태에서:
| Tier | TTFT | ITL | Req/s | Output TPS | KV Hit | Restore GB/s | Error |
|---|---|---|---|---|---|---|---|
| none | N/A | ||||||
| local NVMe | |||||||
| AIStor/MinIO | |||||||
| MemKV TCP | |||||||
| MemKV RDMA | future | future | future | future | future | future | future |
로 비교해야 의미가 있습니다.
KV Tier Qualification
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
GPU HBM Local NVMe Remote systems
│
┌─────────────┴─────────────┐
│ │
▼ ▼
Object Storage MemKV
AIStor/MinIO │
│ │
S3/TLS Native protocol
│ │
TCP TCP / RDMA
│
current ─────┤
TCP │
│
future ──────┘
RDMA
즉 AIStor/MinIO와 MemKV를 같은 remote_obj 박스 안에 넣으면 안 됩니다.
확인 결과, 말씀하신 두 지적 모두 타당합니다.
첫째, 현재 Stage3a10의 remote_obj가 S3 endpoint를 사용한다면 그것은 MemKV test가 아니라 MinIO/AIStor Object Storage test입니다. MemKV는 기본적으로 :9900의 자체 data protocol과 HMAC 인증을 사용하며, vLLM에서는 MemKV plugin/native offloading 또는 LMCache integration 같은 별도 경로가 필요합니다. MinIO AIStor Documentation
둘째, MemKV의 97.4 GB/s급 수치를 현재 TCP-only 환경의 acceptance 기준으로 사용하면 안 됩니다. 그 수치는 공식 문서상 RDMA 기반 distributed full-server performance path와 연결된 결과입니다. 현재 환경에서는 MemKV TCP baseline을 별도로 측정하고, 향후 RDMA 도입 후 같은 workload로 TCP vs RDMA를 재검증하는 게 맞습니다. MinIO AIStor Documentation
따라서 v13의 Stage3a10 문서·스크립트·Excel·draw.io를 모두 remote_object(MinIO/AIStor)와 memkv_tcp, memkv_rdma(future/N/A)로 분리하는 수정이 필요합니다. 이건 단순 문구 수정이 아니라 테스트 의미가 달라지는 부분이라, v13.1 정도로 올려서 반영하는 게 적절합니다.
MinIO AIStor(S3 Object Storage)와 MinIO MemKV(Context Store)는 동일한 MinIO 생태계에 속해 있지만, 설계 목적, 데이터 경로(Data Path), 프로토콜, 그리고 서빙 엔진(vLLM)과의 결합 방식에서 근본적인 차이가 있습니다.
| 비교 항목 | MinIO AIStor (S3 Object Storage) | MinIO MemKV (Context Store / KV Tier) |
|---|---|---|
| 설계 목적 | 대용량 비정형 데이터(모델 가중치, 체크포인트, 로그, 데이터셋)의 영구 저장 및 관리 | LLM 추론 시 발생하는 KV Cache의 초저지연 오프로딩 및 재사용(Context Store) |
| 통신 프로토콜 | 표준 HTTP/REST (S3 API 호환) | 자체 바이너리/데이터 스트리밍 프로토콜 |
| 기본 포트 | :9000 (API), :9001 (콘솔) |
| :9900 (데이터 전송 전용 포트) |
| 인증 메커니즘 | AWS SigV4 (Access Key / Secret Key 기반 서명)
| 경량화된 고속 HMAC 인증 |
| 전송 계층 | 일반 TCP/IP (소켓, HTTP 파싱, 커널 버퍼 복사)
| RDMA / RoCEv2 (GPU Direct Memory Access 지원) 또는 최적화된 고속 TCP 경로 |
| vLLM 연동 방식 | S3 API 기반의 일반 파일/오브젝트 IO (minio SDK 또는 S3 connector)
| LMCache 플러그인, NVIDIA NIXL(Fast IO), 또는 전용 MemKV native connector |
| 처리 단위 | 일반 오브젝트/블록 단위 (수 MB ~ 수 GB 단위의 단일 객체)
| PagedAttention의 KV Cache 블록/토큰 텐서 단위 |
remote_obj 추정 형태):PutObject를 호출합니다.GetObject로 가져와 역직렬화(Deserialization) 후 GPU 메모리에 재배치합니다.현재 구성에서 :9000 포트로 minio Python SDK를 호출하고 있다면, 그것은 "일반 S3 오브젝트 스토리지(AIStor)를 백엔드로 둔 파일 오프로딩 테스트"를 수행하고 있는 것입니다.
진정한 MemKV 테스트가 되려면:
:9900)이 구동 중이어야 하고,LMCache 또는 MinIO MemKV 전용 커넥터(NIXL 등)가 장착되어 바이너리/HMAC 채널로 통신하는지 파이프라인을 교정해야 합니다.