IntelLabs / IntelLabs/vdms

Support memory/storage-pressure-based eviction for DescriptorSets, in addition to _expiration TTL

Open
#333 0 comments 0 reactions 0 assignees View on GitHub
Enhancement
Dominant language
C++
Stars
93
Forks
34
PR merge metrics
No merged PRs in 30d

Description

**Is your feature request related to a problem? Please describe.**
VDMS currently supports descriptor expiration via the `_expiration `property (documented under "Auto-Deletion of Expired Data"), which deletes a descriptor once a fixed TTL has elapsed. This is purely time-based — it has no awareness of actual memory/storage usage.

In our use case (a re-identification pipeline continuously writing embedding vectors from a live video feed), this means we have to pick a TTL conservative enough to bound worst-case growth under peak ingest rate. In practice that means:

- Under normal/light load, descriptors are deleted earlier than necessary, even though there's plenty of headroom.
- Under a sustained burst (e.g. a crowded scene with many new tracks), storage can still grow past whatever memory budget we actually have, since nothing reacts to real usage — only to elapsed time.

**Describe the solution you'd like**
A pressure-based eviction mechanism for DescriptorSets that's independent of (and can work alongside) _expiration, for example:

- A configurable max size (bytes) or max count per DescriptorSet, with LRU/FIFO eviction of the oldest entries once the limit is hit.
- Or a global memory-pressure threshold that triggers eviction of the least-recently-used descriptors across sets when the server approaches a configured memory ceiling.

**Additional context**
Currently using a fixed `descriptor_ttl_secs ` via `_expiration` on every `AddDescriptor` call, sized for worst-case ingest. This works but trades off either premature deletion (light load) or insufficient bounding (burst load) — there's no setting that adapts to actual usage.

Contributor guide

Open the contributing guide

Research direction

The payload names AddDescriptor and the _expiration property as entry points; begin by tracing how DescriptorSets currently apply TTL eviction. The issue does not identify files or tests, and completion depends on choosing and specifying a pressure policy, configuration, eviction behavior, and how it coexists with TTL.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.