Epic: RAM/VRAM management -- one budget, tiered texture storage, run on a stated minimum #405
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Depends on
#159 RAM: 16.7 GB of CPU texture copies kept after GPU upload
sky_line/Slipstream
#163 Track RAM + VRAM per release (baseline 2026-09-29) so regressions are caught
sky_line/Slipstream
#164 VRAM: ray tracing must fit a VRAM-scaled budget, below textures (8 GB cards starve)
sky_line/Slipstream
#226 VRAM: reflection probe resolution can OOM-crash -- pre-check setting-driven allocations, revert + notify on failure
sky_line/Slipstream
#227 RT: rethink the silent auto-off / degrade under low VRAM (confusing to users)
sky_line/Slipstream
#244 VRAM footprint: 7.5 GB on a 12 GB card in a moderate sim — investigate leak / over-allocation
sky_line/Slipstream
#262 RAM: transient peak ~22 GB during login/teleport (steady state 9 GB)
sky_line/Slipstream
#263 Explore: further texture memory reductions (RAM + VRAM)
sky_line/Slipstream
#274 GPU-ready texture cache: store block-compressed textures on disk (skip J2C decode + encode on reload)
sky_line/Slipstream
#282 Epic: VRAM pressure redesign -- texture pool absorbs pressure first, RT fits 8 GB cards, no alarming notices
sky_line/Slipstream
#295 VRAM pressure: reflection probes as a ladder step (resolution, then count), probe budget, no hard OOM aborts (#294)
sky_line/Slipstream
#302 LL perf (Textures/assets): Asset storage: duplicate cache probes, main-thread disk round trip, linear lists
sky_line/Slipstream
#300 LL perf (Textures/assets): Texture cache I/O pattern and LRU
sky_line/Slipstream
#403 [viewer] Massive performance hitch when running two Slipstream viewers at the same time
sky_line/Slipstream
#407 VRAM: find and track the untracked ~1.5 GB (it varies per machine); feed measured overhead into the budget
sky_line/Slipstream
Reference
sky_line/Slipstream#405
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
One plan for how Slipstream uses RAM and VRAM. Goals:
This epic ties together every open memory ticket. The plan below was reviewed by the owner on 2026-10-05. The decisions section overrides anything in the draft that disagrees with it.
What exists today (2026-10-05)
VK_EXT_memory_budget(per-process heap budget).LLMemoryGovernor(#262) samples available system memory (MemAvailable / GlobalMemoryStatusEx, Linux PSI) and keeps a reserve for other programs.Estimated minimum (to be confirmed by measurement)
Decisions (owner, 2026-10-05)
Order: A and B in parallel. They touch mostly separate code (A: renderer and budget; B: texture pipeline and cache), so they can go to separate agents.
Reserve: 10% of VRAM. The reserve is not off-limits. Usage inside it is allowed, but entering it means the soft ladder drops fast: multiple steps per check, shorter intervals, no waiting for hysteresis. Outside the reserve, normal pacing applies.
Second instance: rely on the new budget system (OS per-process budget, continuous reaction, soft ladder). No special half-budget start for now; revisit after A ships if #403-style cases still thrash.
Soft ladder order (temporary, automatic, settings untouched). Within each texture step, the largest textures go first, for the most memory freed per step:
Recovery runs in reverse order, automatically, with hysteresis. Turning a shadow type off here is temporary and doesn't touch the setting. The hard step (write + latch + notify) stays reserved for crash avoidance only.
Minimum spec: 4 GB VRAM minimum, 8 GB recommended, until the 2 GB stretch goal (#408) is met.
Draft plan
A. One VRAM budget that everything fits under (priority 1)
Rule: ordinary pressure never changes the user's settings. Settings are the user's ceiling. Under pressure the budget manager lowers effective values below that ceiling, temporarily, and puts them back when memory frees up. Rewriting a setting is reserved for a last-ditch step to keep the viewer from crashing.
min(user cap, OS per-process budget) - reserve.Soft ladder (temporary, automatic, settings untouched). When over budget, step down, lightest visual impact first:
Rules for the soft ladder:
Hard step (last resort, crash avoidance only).
Sharing between processes
Floor: if even the hard step can't get under budget, we keep running at the minimum and warn once, instead of thrashing.
B. Tiered texture storage: RAM when it's cheap, disk when it isn't (#159, #274)
C. Transient peaks and other RAM
D. Make it visible
E. Measure and guard (#163)
Child tickets
VRAM budget and ladder:
RAM and texture tiers:
Measurement:
Stretch:
Related:
Status 2026-10-10: A (one budget + soft ladder + soft-fail allocations, verified with a 2000 MB fake budget and injected allocation failures), B (tiered storage: tier-2 GPU texture cache, CPU copies dropped) and D (VKMem status line + per-change logs) are done; children #159 #164 #226 #227 #244 #262 #263 #274 #295 #296 #300 #403 #407 #411 closed. Remaining: #163 (per-release RAM/VRAM tracking = part E, not started), #302 (asset storage I/O, unverified), #282 (pressure epic), #408 (2 GB stretch). Follow-up VRAM work: #614-#617, #625.