It's slow, it's using all my RAM, or my cache drive is full
Open Performance Settings from the gear menu. Every setting there applies immediately with no restart, with three exceptions: the Stacking Tile Cache applies on next launch, Scan Concurrency applies to the next scan, and Cache Location goes through a guided relocation instead of saving directly.
Screenshot: Performance Settings, top of the page, showing the concurrency fields.
Every knob
Section titled “Every knob”| Label | Controls | Default | Env override |
|---|---|---|---|
| Read Concurrency | Parallel whole-frame reads for tile and thumbnail builds | 3 | EIGENFRAME_READ_CONCURRENCY |
| Scan Concurrency | Library-scan workers per drive or share | 0 (automatic: 4 on a local drive, 16 on a network share) | EIGENFRAME_SCAN_CONCURRENCY |
| Compute Concurrency | Tile build threads | CPU count, capped at 16 | EIGENFRAME_COMPUTE_CONCURRENCY |
| Stack jobs (concurrent) | Calibration stacking jobs running at once | 4 | none |
| Stacking reserved workers (under contention) | Compute workers held for stacking when stacking and viewing contend | 4 | none |
| Viewer reserved workers (under contention) | Compute workers held for the viewer when stacking and viewing contend | 8 | none |
| Alignment evaluate concurrency | Frames the Evaluate alignment step re-detects at once | CPU count minus 2, never below 2, capped at Compute Concurrency | EIGENFRAME_ALIGNMENT_EVAL_CONCURRENCY |
| In-Flight Memory Budget | Ceiling on memory held by reads in progress | 4 GB | none |
| Cache Size Cap | Disk-space ceiling for cached image tiles, covering the full tile pyramid | 8 GB | none |
| Stacking Tile Cache | In-memory budget for decoded tiles reused during integration (shared master tiles and the stacking lab’s source tiles) | 4 GB | none |
| Stack Memory Budget | Ceiling on the working memory of stack tiles building at once | 0 (automatic: half the machine’s RAM, floored at 4 GB) | none |
| Cache Eviction Headroom | How much to reclaim in one pass once the Cache Size Cap is reached | 1 GB | none |
| Drive Free-Space Reserve | Minimum free space to keep on the cache drive | 2 GB | none |
| Drive Eviction Target | How much to reclaim in one pass once the free-space reserve is breached | 8 GB | none |
| Stalled-read timeout | How long a stalled read is held before it’s dropped | 5 seconds | none |
| Cache Location | Folder path for the tile cache | Empty (uses %APPDATA%/EigenFrame/tiles-cache) | none |
Only the four settings with an entry in the Env override column can actually be pinned by an environment variable. When one is set, its field on the screen is disabled and shows which variable is holding it.
The screen warns you if Read Concurrency and Compute Concurrency are both 2 or below: performance is significantly reduced at that level.
A library on a spinning disk or a network share
Section titled “A library on a spinning disk or a network share”Lower Read Concurrency. Many concurrent whole-frame reads make a spinning disk seek between them instead of staying on one track, so a small number keeps the head busy without thrashing. Scan Concurrency already treats network shares differently from local drives by default (16 workers instead of 4), because scanning is many small header reads rather than a few large ones; raise or lower it if that default doesn’t fit your share.
A memory-tight machine
Section titled “A memory-tight machine”Lower Read Concurrency, Compute Concurrency, In-Flight Memory Budget, and Stack Memory Budget together. Reads pause once the In-Flight Memory Budget fills rather than piling up, so a smaller budget keeps a lid on peak memory during tile and thumbnail builds. Stack Memory Budget does the same for stacking: leave it at 0 to let it track half the machine’s RAM automatically, or set it explicitly on a machine where that automatic half is still too much.
A full cache drive
Section titled “A full cache drive”The tile cache is fully disposable. Every tile rebuilds on demand from your source frames, so nothing is lost if you empty it or move it. Cache Size Cap is the overall ceiling; Drive Free-Space Reserve keeps a minimum free regardless of the cap; Drive Eviction Target and Cache Eviction Headroom control how much is reclaimed in one pass so eviction doesn’t thrash right at the edge.
If the cache belongs on a different drive, change Cache Location and saving opens a guided relocation with three options:
- Move existing cache copies every cached tile to the new location, then removes the old one. Keeps the cache intact.
- Start fresh switches to the new, empty location and deletes the old cache. Faster; tiles rebuild on demand.
- Switch & keep old points at the new location and leaves the old files in place for you to clean up yourself.
Screenshot: The Relocate tile cache dialog with its three transition options.