Performance and platform limits
KOPR R22 uses bounded automatic scheduling for calibration, reprojection, stacking and astrometry. These limits are internal safety contracts, not user preferences.
Fixed automatic limits
| Operation | Maximum concurrency | Memory policy |
|---|---|---|
| Masterdark/masterflat median | 4 threads | One shared 192 MiB allowance |
| Prepared master cache | Two recent pairs | 768 MiB hard ceiling and 25% of available RAM |
| LIGHT calibration | 2 threads | Adaptive per-image RAM estimate |
| Row reprojection | 2 threads | One shared 256 MiB allowance |
| Sigma clipping | 2 threads | One shared 256 MiB allowance |
| Astrometry.net batch | 2 external processes | Isolated solver working directories |
Operational behaviour
- Numerical scheduling uses threads rather than Python worker processes.
- Output order and commits remain deterministic even when work completes in parallel.
- Small jobs and constrained systems may run serially; this is expected and is not an error.
- Closing KOPR or pressing Cancel uses the normal cooperative shutdown path before temporary files or external solver processes are removed.
- Performance changes do not change the numerical, calibration, stacking, astrometry or FITS-storage algorithms.
Platform-neutral release validator
From the source root, run:
python3 validate_performance_release.pyThe validator does not import PyQt, NumPy or Astropy. It checks the fixed worker and memory limits, absence of user-visible worker settings, thread-based numerical scheduling, required release references, clean distribution contents and the SHA-256 manifest.
For machine-readable output:
python3 validate_performance_release.py --jsonValidated platform contracts
Linux
R22 passed the available numerical references, thread lifecycle, atomic temporary-file handling, native subprocess contracts and clean-archive validation. Real PyQt rendering and a real solve-field execution still require a suitably equipped target system.
Native Windows
Contract tests cover CPU/RAM fallbacks, paths with spaces and Unicode, case-insensitive output-name collisions, atomic output installation, solver process creation and cancellation. A real native-Windows GUI smoke test remains required.
Windows with WSL
Contract tests cover native-solver preference, WSL fallback preflight, optional distribution selection, wslpath translation, two bounded astrometry tasks, deterministic commit order, Cancel and cleanup. A real two-process solve-field run through wsl.exe remains a target-machine acceptance step.
Informational optimization results
These values were observed during the optimization series. They depend on hardware and data and are not release gates.
| Optimization | Observed result |
|---|---|
| Automatic comparison-star local disk masks on 24 Mpx / 150 stars | About 13× |
| Master median, four workers | About 3.11× |
| Sigma clipping, two workers | About 2.33× |
| Astrometry scheduler, simulated external tasks | About 1.98× |
| LIGHT calibration, two workers | About 1.53× |
| Row reprojection, two workers | About 1.66× |
| Fused science+saturation reprojection | About 1.24× |
Recommended target-machine acceptance
Linux
python3 validate_performance_release.py
PYTHONPATH=. python3 -m pytest tests/ -q
python3 kopr.pyWindows/WSL
- Open KOPR and calibrate a small test series.
- Create SUM/MEAN and sigma-clipped stacks.
- Run astrometry on at least three fields and confirm that no more than two
solve-fieldprocesses are active. - Cancel the batch and confirm that both active processes terminate and no
.solve_*directory remains. - Repeat from a path containing spaces and Czech characters.
- Close KOPR during calibration or stacking and confirm cooperative shutdown and clean process exit.
Compact reference
Download the R22 performance and platform reference.
Related chapters: Image Calibration & Stacking · Installation · Troubleshooting · Developer testing