컬렉션 메모리 사용량 모니터링

컬렉션 메모리 사용량 모니터링 (ops-monitoring-memory-usage)

v1.18.0부터 사용 가능한 기능이에요.

Qdrant는 컬렉션의 디스크 공간, RAM, OS 페이지 캐시 사용량을 클러스터 전체에 걸쳐 합산하고, 구성 요소별로 세분화해서 볼 수 있게 해 줘요. 이를 통해 용량을 계획하거나, 메모리 압박을 진단하거나, 컬렉션의 어떤 부분이 메모리에 상주하는지 파악할 수 있어요.

이 정보는 Qdrant Web UI와 API를 통해 모두 확인할 수 있어요.

출처: Qdrant 공식문서 - Monitor Collection Memory Usage

Web UI

컬렉션 상세 페이지를 열고 Memory 탭을 선택해요. 컬렉션의 메모리 분해 내역이 필요할 때마다 갱신되어 보여요.

Memory 탭은 컬렉션의 각 구성 요소에 대한 디스크, RAM, 캐시 사용량의 분해 내역을 보여줘요.

필드 이해하기

분해 내역은 다음과 같은 구성 요소를 다뤄요:

구성 요소 설명
Total 모든 구성 요소의 합계.
Vectors 밀집 및 멀티-밀집 벡터별: 스토리지, 인덱스, 그리고 선택적으로 양자화.
Sparse Vectors 희소 벡터별: 스토리지와 인덱스.
Payload 페이로드 스토리지.
Payload Index 페이로드 필드 인덱스별.
ID Tracker 외부 point ID를 내부 ID로 매핑.

각 구성 요소는 네 가지 값을 보고해요:

필드 설명
Disk 디스크의 총 파일 크기.
RAM 비-제거 가능(non-evictable) 힙 RAM: 메모리 매핑 파일로 뒷받침되지 않는 인메모리 데이터 구조.
Cached 제거 가능(evictable) RAM: 현재 OS 페이지 캐시에 상주하는 파일 페이지.
Expected Cache 최상의 성능을 위해 이상적으로 캐시되어야 하는 데이터의 양. 이 값을 Cached와 비교하면 워킹 셋(working set) 중 얼마나 '따뜻한' 상태인지 알 수 있어요.

이 값들은 대략적으로 구성 요소별로 사용할 수 있는 메모리 계층과 대응돼요:

  • pinned 구성 요소는 전체 크기를 RAM으로 보고해요.
  • cached 구성 요소는 미리 로드되며, 일반적으로 Cached 아래에 나타나요. 다만 메모리 압박 시 제거된 페이지는 Disk로 돌아가요.
  • cold 구성 요소는 Qdrant가 미리 로드하지 않으므로 주로 Disk로 나타나요. 다만 실제 접근으로 OS가 페이지를 워밍업하면 Cached 아래에도 나타날 수 있어요.

API

동일한 데이터를 Qdrant의 API로도 조회할 수 있어요:

curl http://localhost:6333/collections/{collection_name}/memory

정확도 (Accuracy)

보고되는 값은 추정치예요. RAM 사용량은 서드파티 라이브러리와 할당자(allocator) 자체가 할당한 메모리가 계산에 포함되지 않기 때문에 일반적으로 10~15% 과소평가돼요.

비-Unix 시스템에서는 Cached가 항상 0으로 보고돼요.

더 알아보기 (Learn more)