Skip to content

server : clear slot checkpoints before saving to prompt cache to prevent ram overflow. - #24649

Closed
wbpxre150 wants to merge 0 commit into
ggml-org:masterfrom
wbpxre150:master
Closed

wbpxre150 wants to merge 0 commit into
ggml-org:masterfrom
wbpxre150:master

Conversation

@wbpxre150

Copy link
Copy Markdown
Contributor

…ent OOM

Checkpoints are session-internal rollback points for hybrid/recurrent models (e.g. Qwen3.6) and are not needed for inter-session cache reuse. Previously, prompt_save() copied all checkpoint data into the cache entry, and alloc() copied checkpoints into each new cache state, causing checkpoint RAM to accumulate up to the cache-ram limit (default 8 GiB) on top of the active slot checkpoint budget.

Fix: clear checkpoint data in prompt_save() before serialising the KV state, and store empty checkpoints in new cache entries in alloc(). Also adds a Linux-only get_available_ram_bytes() helper to log available RAM at save time for easier diagnosis.

Overview

Additional information

Requirements

@wbpxre150
wbpxre150 requested a review from a team as a code owner June 15, 2026 10:55
naamfung added a commit to naamfung/laamaafung that referenced this pull request Jul 14, 2026
Checkpoints are session-internal KV state snapshots for hybrid/recurrent
model rollback. They are meaningless across sessions - a new session
creates its own. Previously alloc() copied the source prompt's checkpoints
into each cache entry, causing checkpoint RAM to accumulate within the
cache-ram budget without benefit.

Store empty checkpoints in cache entries instead. When load() restores
a cached prompt, the new session correctly starts with no checkpoints.

Ref: ggml-org/llama.cpp#24649
naamfung added a commit to naamfung/laamaafung that referenced this pull request Jul 14, 2026
Checkpoints are session-internal KV state snapshots for hybrid/recurrent
model rollback. They are meaningless across sessions - a new session
creates its own. Previously alloc() copied the source prompt's checkpoints
into each cache entry, causing checkpoint RAM to accumulate within the
cache-ram budget without benefit.

Store empty checkpoints in cache entries instead. When load() restores
a cached prompt, the new session correctly starts with no checkpoints.

Ref: ggml-org/llama.cpp#24649
naamfung added a commit to naamfung/laamaafung that referenced this pull request Jul 20, 2026
Checkpoints are session-internal KV state snapshots for hybrid/recurrent
model rollback. They are meaningless across sessions - a new session
creates its own. Previously alloc() copied the source prompt's checkpoints
into each cache entry, causing checkpoint RAM to accumulate within the
cache-ram budget without benefit.

Store empty checkpoints in cache entries instead. When load() restores
a cached prompt, the new session correctly starts with no checkpoints.

Ref: ggml-org/llama.cpp#24649
@wbpxre150 wbpxre150 closed this Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant