Skip to content

Performance Timers

After every generation, SD.Next prints a performance line below the image and in the server log that breaks down where the time went:

Time: 5.52s | total 8.57 pipeline 3.60 decode 1.80 onload 1.02 prompt 0.77 preview 0.76 move 0.46 | GPU 11238 MB 46% | RAM 15.73 GB 24%

  • First number is the wall-clock duration of the inference, including UI overhead of all stages
  • The middle section lists per-stage timers, sorted by duration
  • Stages taking less than 0.25 sec are hidden
  • GPU and RAM show peak memory usage for the run

Reading this line is the fastest way to find out why a generation is slow and which setting to tune

Stage reference

Model execution

Timer Meaning Note
pipeline The main denoising loop: UNet or DiT/transformer forward passes for each step This is the core compute of the generation
hires Second-pass processing when HiRes fix is enabled
refine Refiner pass when a refiner model is enabled
decode The final decode stage: turning latents into the output image, including image post-processing
vae Time spent inside actual VAE encode/decode calls, e.g. encoding the input image for img2img/inpaint Overlaps with decode on the output side
te Text encoder forward pass: turning the parsed prompt into conditioning tensors
prompt Prompt parse and text-encode: attention syntax, prompt scheduling and building the embeddings Overlaps with te
lora Loading, applying and removing LoRA weights See LoRA for the performance impact of different LoRA modes

Memory management

Timer Meaning Note
sync GPU synchronization time: waiting for GPU to finish one task before moving to the next one can be (unsafe) disabled in Settings -> Backend Settings
onload Moving model components from RAM to VRAM when offloading is active See Offload
offload Moving model components from VRAM back to RAM See Offload
move Module component forced device moves Used by legacy pipelines only, modern models report onload/offload instead
gc Garbage collection: clearing unused RAM and VRAM between stages

Everything else

Timer Meaning Note
preview Generating live previews during sampling Runs asynchronously on a separate thread, so it only partially adds to wall-clock time
callback Per-step callbacks executed during sampling
init Pipeline and sampler initialization
prepare, pre Applying processing modifiers (IP-Adapter, HiDiffusion, PAG, etc.) before the run
post Unapplying processing modifiers and post-processing after the run
process Overall per-batch processing wrapper overlaps with the stages above
validate Validating decoded samples and converting them to image format
proc Running Control input processors (canny, depth, pose, etc.) on the input image

Note

Video models (LTX, FramePack) report their own stage timers such as base, upsample, sample, encode and vision which follow the same principle: each named stage is the time spent in that part of the video pipeline.

What to tune

  • High pipeline: this is the actual model compute. Fewer steps, a faster sampler, quantization, or model compile. See Performance Tuning
  • High onload/offload/move: model parts are being shuffled between RAM and VRAM every generation. If you have VRAM headroom, raise the offload low watermark or exempt specific model/module types from offloading in Settings -> Models & Loading. Note that offloading exists for a reason: workflows that spike VRAM usage, such as HiRes to a much higher resolution, need that headroom for decode. See Offload
  • High decode/vae: consider a faster VAE, or check whether VAE tiling/slicing is enabled unnecessarily on a high-VRAM system. See VAE
  • High lora: LoRA apply cost depends heavily on LoRA type and mode; see the measurements in Offload
  • High te/prompt: large text encoders (T5, LLMs) are expensive; offloading them adds onload cost on every prompt change. Reusing the same prompt avoids re-encoding