qdrant-memory-usage-optimization
Understanding memory usage
Qdrant operates with two types of memory:
-
Resident memory (aka RSSAnon) - memory used for internal data structures like the ID tracker, plus components that stay fully in RAM. On Qdrant 1.19 or newer this is controlled per-component with
memory: pinned(e.g. quantized vectors, payload indexes); on 1.18 or older the equivalent isalways_ram: true. -
OS page cache - memory used for caching disk reads, which can be released when needed. Original vectors are normally stored in page cache, so the service won't crash if RAM is full, but performance may degrade. On Qdrant 1.19 or newer this corresponds to
memory: cached(pre-warmed into page cache at startup) ormemory: cold(lazy disk reads, not pre-warmed); on 1.18 or older it's controlled via theon_diskboolean on vectors, HNSW config, sparse vector index, and payload index. See Memory Tiers docs (available on 1.19+).
It is normal for the OS page cache to occupy all available RAM, but if resident memory is above 80% of total RAM, it is a sign of a problem.
Memory usage monitoring
- Qdrant exposes memory usage through the
/metricsendpoint. See Monitoring docs.