Some extensions for retargeting, scene optimizer and navmesh consume too much cpu cycles even when not used at all

Operating System:
Windows
Linux
Kit Version:
110 (Kit App Template)
109 (Kit App Template)
108 (Kit App Template)
107 (Kit App Template)
106 (Kit App Template)
105 (Launcher)
Kit Template:
USD Composer
USD Explorer
USD Viewer
Custom
GPU Hardware:
A series (Blackwell)
A series (ADA)
A series
50 series
40 series
30 series
GPU Driver:
Latest
Recommended (573.xx)
Other
Work Flow: developing a level editor
Main Issue: some extensions for retargeting, scene optimizer and navmesh consume too much cpu cycles even when not used at all.


Known Issues

1. CPU-Bound Performance Drops in Editor (USD Notice & Preview Observers)

  • Status: Workaround Active (Default Disabled)
  • Symptom: Editor frame rate drops from ~78 FPS down to ~50 FPS, even in static or idle scenes.
  • Profiler Analysis (F8):
    • CPU loop (App Update / Carbonite Dispatch Event: update) spikes to ~17ms (CPU-bound).
    • GPU render frame time remains extremely low at ~0.6ms (GPU is idle).
    • The bottleneck is inside the event dispatcher (Notify observers).

Root Causes

  1. Notice Loop Cascade: Background UI systems (like Scene Optimizer and Asset Validator) register USD stage listeners. Whenever the timeline updates or any value changes, a cascade of notice-callback evaluations traverses the stage, creating heavy CPU overhead.
  2. Background Rendering Viewports: The retargeting preview extension (omni.anim.retarget.preview) spawns background virtual Hydra viewport contexts that run render loops on every frame, consuming ~1.5ms of CPU time even when its tab/window is closed.
  3. Shutdown Reference Leaks: Disabling these extensions at runtime via the Extension Manager does not recover performance. NVIDIA’s scripts for these extensions contain Python reference leaks in their on_shutdown() cycle (cyclic references, unreleased frame stacks). The Python garbage collector cannot reclaim their objects, leaving their background threads and update listeners active in memory.

Long-Term Resolution Plan

  • Investigate the exact reference leaks in omni.anim.retarget.preview and omni.scene.optimizer.core using memory profiling tools.
    Reproduction Steps: enable these extensions in the app’s .kit file or via UI
    Error Code: