본문으로 건너뛰기

GPU Direct Storage (GDS)

[!tldr] 업무 관점 takeaway GPU ↔ NVMe 간 데이터 이동에서 CPU를 거치지 않는 NVIDIA 기술. [[LMCache-개요|LMCache]]가 공식적으로 GDS Backend를 지원한다 — 이건 우리에게 FDP Backend 설계 레퍼런스 코드다. "Direct I/O + Direct DMA"의 완성형. FDP + GDS 조합이 가능하다면 (PCIe 경로상으로 가능) CPU 우회 + NAND 우회 GC가 동시에 달성되어 KV Cache 로드의 이상적 형태가 된다.


한 줄 정의

NVIDIA의 기술. PCIe peer-to-peer DMA를 사용해 GPU 메모리와 NVMe SSD 간에 CPU/시스템 메모리를 거치지 않고 직접 데이터 전송.

기존 경로:
SSD → System DRAM → GPU memory
(CPU/DRAM 통과 → bounce buffer 비용)

GDS 경로:
SSD ──────► GPU memory (PCIe P2P DMA)
(CPU/DRAM 우회)

왜 KV Cache에 중요한가

LMCache의 [[LMCache-아키텍처|4티어]] 중:

CPU DRAM ──(LRU evict)──► SSD

│ (prefetch)

SSD ──(read)──► CPU DRAM ──► GPU memory

마지막 SSD → CPU DRAM → GPU 단계가 [[TTFT-ITL|warm TTFT]]의 핵심 비용. GDS는 이 중간 CPU DRAM 단계를 우회.

[[KV-Cache]] read는 [[LMCache-Local-Disk-Backend|blocking]]이므로 직결 효과가 직접적.


LMCache의 GDS 지원

LMCache 공식 문서에 GDS Backend가 명시:

  • 자체 backend로 등록 가능
  • Direct I/O (O_DIRECT)와 비슷한 alignment 요구
  • CUDA + cuFile 라이브러리 활용

→ 우리에게는 FDP Backend 작성의 레퍼런스 코드.


FDP + GDS 조합 가능성

이상적 시나리오 (Phase 4 검토 항목):

GPU ───── PCIe P2P DMA (GDS) ──── NVMe FDP SSD
│ │
│ ├── RUH로 hot/cold 분리 (FDP)
│ └── GC 최소화 → WAF ~1.0

└── CPU/DRAM 우회 → latency ↓

물리적으로는 가능 (둘 다 NVMe write/read 명령에 부가 정보). 단:

  • 드라이버 수준 통합 확인 필요
  • cuFile + io_uring_cmd 조합 가능성 조사 필요
  • [[기여-포인트-맵]]의 장기 항목

의외의 연결

[!note] GDS ↔ io_uring_cmd 철학적 유사성 둘 다 "중간 레이어를 건너뛰어 디바이스에 직결". GDS는 CPU DRAM 우회, io_uring_cmd는 FS/Block layer 우회. 차이: GDS는 GPU↔SSD, io_uring_cmd는 CPU↔NVMe driver. 둘을 결합하면 "CPU도 안 거치고 FS도 안 거치고 GPU↔SSD 직결" 이라는 가장 깊은 직결이 된다.

[!note] GDS 효과는 LMCache의 PUT보다 GET에서 크다 PUT은 LMCache가 이미 async이므로 CPU latency가 critical path 아님. GET은 blocking → CPU DRAM 통과가 그대로 [[TTFT-ITL|TTFT]]에 더해진다. 즉 GDS는 read 가속 도구로 봐야 한다.


측정/실험 관점

  • vLLM은 GPU 직접 모델 실행 → GDS와 같은 PCIe 도메인
  • HC-SSD 환경에서 GDS read 성능 → cold load 가속화
  • baseline (no GDS) vs GDS 측정으로 효과 정량화

관련 페이지

  • [[LMCache-Local-Disk-Backend]] — GDS backend의 이웃 (참고 구현)
  • [[NVMe-FDP]] — 함께 활성화 가능한 SSD 기능
  • [[O_DIRECT]] — GDS와 비슷한 "우회" 옵션 (CPU 쪽)
  • [[io_uring]] — 동일한 직결 철학
  • [[Storage-Stack]] — GDS가 어느 레이어를 우회하는가
  • [[Mission]] — Phase 4의 부가 검토 항목