Performance & Content Best Practices — Spatial Streaming for Omniverse Digital Twins Workflows
Hello, I would like to ask how to use Python to read the values of profiler parameters (such as RTX Rendering, DLSS, and other values that affect GPU performance) and calculate their averages.
Thank you for posting this. To read and average profiler parameters like RTX Rendering, DLSS, and other GPU-affecting values in Isaac Sim using Python, use the relevant APIs and configuration utilities, depending on what is exposed in Isaac Sim’s Python scripting environment. Direct interaction with specific profiler metrics (like RTX, DLSS) is typically handled through configuration classes and console statistics, but Isaac Sim’s Python API most often allows you to query overall simulation or rendering statistics programmatically.
Accessing Rendering/Profiler Parameters in Python
- Rendering settings such as RTX and DLSS are accessed and modified using configuration classes (e.g.,
RenderCfg in Isaac Lab) that allow you to set and query settings for the rendering backend, DLSS, and similar features.
- You can collect general simulation statistics, such as FPS and GPU memory usage, by using the relevant Python APIs or by accessing statistics published by the Omniverse rendering engine.
Example: Querying and Averaging Profiler Statistics
Below are steps and sample code snippets for querying and averaging such parameters in Isaac Sim:
1. Access Rendering Configuration (including DLSS/RTX)
For values you set programmatically (example for Isaac Lab/Isaac Sim 4.x/5.x):
from isaaclab.sim import RenderCfg
render_cfg = RenderCfg(
rendering_mode="performance",
enable_translucency=True,
enable_reflections=True,
dlss_mode="3"
)
print(render_cfg.dlss_mode) # Get current DLSS mode
This only shows what’s set. To monitor actual GPU performance metrics, see below.
2. Gather GPU/Simulation Stats Exposed by Isaac Sim
Retrieve stats such as FPS and frame time:
from omni.kit.app import get_app
app = get_app()
fps_list = []
for _ in range(100): # Example: run for 100 frames
fps = app.get_renderer_stats().fps
fps_list.append(fps)
mean_fps = sum(fps_list) / len(fps_list)
print("Average FPS:", mean_fps)
Note: The actual API may use slightly different fields (e.g., .fps, .gpu_time, etc.), check the output of get_renderer_stats() for available attributes.
Hello, thank you very much for responding to my question.
I really appreciate it, but unfortunately, my environment today is Isaac Sim 4.5 and USD Composer 107.3.
When I ran the code below today, I always get the error: AttributeError: ‘omni.kit.app._app.IApp’ object has no attribute ‘get_renderer_stats’.
Could you please let me know if there is any way for me to get the result I want?
Thank you.
Thank you for following up. It seems Isaac Sim no longer exposes get_renderer_stats() on the Kit app; the supported way to get FPS and frame times in current Isaac Sim (4.x/5.x) is to use the isaacsim.benchmark.services extension, which records frametime and computes FPS in a documented way.
Using Benchmark Services to get FPS
Enable the extension isaacsim.benchmark.services (it is listed under “Benchmark Services” in the official Extensions API).
Then in a standalone or scripted run, wrap your simulation code like this:
from isaacsim.benchmark.services import BaseIsaacBenchmark
from omni.isaac.kit import SimulationApp
# Launch Isaac Sim (headless or not)
simulation_app = SimulationApp({"headless": False})
# Import core sim APIs after SimulationApp is created
from omni.isaac.core import World
# Create benchmark object (documented in isaacsim.benchmark.services)[web:21]
benchmark = BaseIsaacBenchmark(
benchmark_name="MySimFPSBenchmark",
backend_type="OmniPerfKPIFile", # default backend in docs[web:21]
report_generation=False,
)
# Phase 1: loading / setup
benchmark.set_phase("loading")
world = World()
world.reset()
benchmark.store_measurements() # stores frametime/runtime for "loading"[web:21]
# Phase 2: benchmark – run N frames
benchmark.set_phase("benchmark") # starts frametime + runtime recording[web:21]
num_frames = 100
for _ in range(num_frames):
world.step(render=True)
benchmark.store_measurements() # stops recording and writes raw metrics[web:21]
benchmark.stop()
simulation_app.close()
Hi Phennigs!
Thank you for your reply.
Unfortunately, today when I was using Composer and Isaac Sim 4.5, I encountered the issue shown in the screenshot.
It seems that this package is no longer supported.
If there are any other solutions to resolve this?
Thank you.