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.

No thread or memory controls are exposed in Settings. KOPR selects the safe bounded path automatically and falls back to serial processing for small jobs, one-CPU systems, insufficient RAM or scheduler initialization failure.

Fixed automatic limits

OperationMaximum concurrencyMemory policy
Masterdark/masterflat median4 threadsOne shared 192 MiB allowance
Prepared master cacheTwo recent pairs768 MiB hard ceiling and 25% of available RAM
LIGHT calibration2 threadsAdaptive per-image RAM estimate
Row reprojection2 threadsOne shared 256 MiB allowance
Sigma clipping2 threadsOne shared 256 MiB allowance
Astrometry.net batch2 external processesIsolated 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.py

The 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 --json

Validated 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.

OptimizationObserved result
Automatic comparison-star local disk masks on 24 Mpx / 150 starsAbout 13×
Master median, four workersAbout 3.11×
Sigma clipping, two workersAbout 2.33×
Astrometry scheduler, simulated external tasksAbout 1.98×
LIGHT calibration, two workersAbout 1.53×
Row reprojection, two workersAbout 1.66×
Fused science+saturation reprojectionAbout 1.24×

Recommended target-machine acceptance

Linux

python3 validate_performance_release.py
PYTHONPATH=. python3 -m pytest tests/ -q
python3 kopr.py

Windows/WSL

  1. Open KOPR and calibrate a small test series.
  2. Create SUM/MEAN and sigma-clipped stacks.
  3. Run astrometry on at least three fields and confirm that no more than two solve-field processes are active.
  4. Cancel the batch and confirm that both active processes terminate and no .solve_* directory remains.
  5. Repeat from a path containing spaces and Czech characters.
  6. 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