Skip to content

Commit a77dbdc

Browse files
Consolidate simulation performance guidance (#7365)
## Description Consolidates the standalone simulation performance how-to into the troubleshooting reference, where users are more likely to look for slow simulation and training guidance. The previous page remains as a compatibility pointer so existing links continue to work. This also updates the Nsight profiling cross-reference, points broad tuning guidance to the maintained Isaac Sim performance guides, and synchronizes the setup-troubleshooting skill. ## Type of change - Documentation update ## Release backport - [x] <!-- backport-active-release --> Backport this pull request to the active release branch after it merges into `develop` ## Validation - uv run --isolated --extra test -- make -C docs current-docs - uv run --no-sync isaaclab -f - uv run --no-project python tools/skills/cli.py check - Baseline and skill-assisted slow-throughput routing evaluation ## Checklist - [x] I have read the contribution guidelines. - [x] I have run the pre-commit checks. - [x] I have updated the relevant documentation and troubleshooting skill. - [x] The documentation builds with warnings treated as errors. - [x] A changelog fragment is not required because no source package changed. Co-authored-by: Kelly Guo <kellyg@nvidia.com>
1 parent 36c982c commit a77dbdc

7 files changed

Lines changed: 61 additions & 96 deletions

File tree

docs/source/how-to/index.rst

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -188,19 +188,6 @@ with directional force feedback in Isaac Lab.
188188
haply_teleoperation
189189

190190

191-
Understanding Simulation Performance
192-
------------------------------------
193-
194-
This guide provides tips on optimizing simulation performance for different simulation use cases.
195-
Additional resources are also linked to provide relevant performance guides for Isaac Sim and
196-
Omniverse Physics.
197-
198-
.. toctree::
199-
:maxdepth: 1
200-
201-
simulation_performance
202-
203-
204191
Profiling Isaac Lab with Nsight Systems
205192
---------------------------------------
206193

docs/source/how-to/profile_with_nsys.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,6 @@ Troubleshooting
124124
See Also
125125
--------
126126

127-
- :doc:`simulation_performance` - broader simulation performance tuning tips.
127+
- :ref:`simulation-performance-troubleshooting` - checks for unexpectedly slow simulation or training.
128128
- `Nsight Systems User Guide <https://docs.nvidia.com/nsight-systems/UserGuide/index.html>`_ - official ``nsys`` documentation.
129129
- `NVTX Python package <https://nvtx.readthedocs.io/>`_ - the package nsys uses to emit NVTX ranges from Python.
Lines changed: 5 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,7 @@
1-
PhysX Simulation Performance and Tuning
2-
=========================================
1+
:orphan:
32

4-
.. note::
3+
Simulation Performance
4+
======================
55

6-
This guide covers performance tuning for the **PhysX** backend, which is the default when
7-
running Isaac Lab with Isaac Sim. For the **Newton** backend solver parameters (e.g.
8-
``njmax``, ``nconmax``, ``ls_iterations``), see the
9-
:ref:`migrating-to-isaaclab-3-0` migration guide and the Newton physics documentation.
10-
11-
The performance of the PhysX simulation can be affected by various factors, including the number
12-
of objects in the scene, the complexity of the physics simulation, and the hardware being used.
13-
Here are some tips to improve performance:
14-
15-
1. **Use Headless Mode**: Running the simulation in headless mode can significantly improve performance, especially
16-
when rendering is not required. For commands that do not select a visualizer, no viewer is launched unless the configuration requests one. If a config or
17-
command would otherwise launch visualizers, pass ``--viz none`` to force-disable them.
18-
2. **Avoid Unnecessary Collisions**: If possible, reduce the number of object overlaps to reduce overhead in the simulation.
19-
Excessive contacts and collisions in the simulation can be expensive in the collision phase in the simulation.
20-
3. **Use Simplified Physics**: Consider using simplified physics collision geometries or lowering simulation fidelity
21-
for better performance. This can be done by modifying the assets and adjusting the physics parameters in the simulation configuration.
22-
4. **Use CPU/GPU Simulation**: If your scene consists of just a few articulations or rigid bodies, consider using CPU simulation
23-
for better performance. For larger scenes, using GPU simulation can significantly improve performance.
24-
25-
Collision Geometries
26-
--------------------
27-
28-
Collision geometries are used to define the shape of objects in the simulation for collision detection. Using
29-
simplified collision geometries can improve performance and reduce the complexity of the simulation.
30-
31-
For example, if you have a complex mesh, you can create a simplified collision geometry that approximates the shape
32-
of the mesh. This can be done in Isaac Sim through the UI by modifying the collision mesh and approximation methods.
33-
34-
Additionally, we can often remove collision geometries on areas of the robot that are not important for training.
35-
In the AnymalC robot, we keep the collision geometries for the kneeds and feet, but remove the collision geometries
36-
on other parts of the legs to optimize for performance.
37-
38-
Simpler collision geometries such as primitive shapes like spheres will also yield better performance than complex meshes.
39-
For example, an SDF mesh collider will be more expensive than a simple sphere.
40-
41-
Note that cylinder and cone collision geometries have special support for smooth collisions with triangle meshes for
42-
better wheeled simulation behavior. This comes at a cost of performance and may not always be desired. To disable this feature,
43-
we can set the stage settings ``--/physics/collisionApproximateCylinders=true`` and ``--/physics/collisionApproximateCones=true``.
44-
45-
Another item to watch out for in GPU RL workloads is warnings about GPU compatibility of ``Convex Hull`` approximated mesh collision geometry.
46-
If the input mesh has a high aspect ratio (e.g. a long thin shape), the convex hull approximation may be incompatible with GPU simulation,
47-
triggering a CPU fallback that can significantly impact performance.
48-
49-
A CPU-fallback warning looks as follows: ``[Warning] [omni.physx.cooking.plugin] ConvexMeshCookingTask: failed to cook GPU-compatible mesh,
50-
collision detection will fall back to CPU. Collisions with particles and deformables will not work with this mesh.``.
51-
Suitable workarounds include switching to a bounding cube approximation, or using a static triangle mesh collider
52-
if the geometry is not part of a dynamic rigid body.
53-
54-
CPU Governor Settings on Linux
55-
------------------------------
56-
57-
CPU governors dictate the operating clock frequency range and scaling of the CPU. This can be a limiting factor for Isaac Sim performance. For maximum performance, the CPU governor should be set to ``performance``. To modify the CPU governor, run the following commands:
58-
59-
.. code-block:: bash
60-
61-
sudo apt-get install linux-tools-common
62-
cpupower frequency-info # Check available governors
63-
sudo cpupower frequency-set -g performance # Set governor with root permissions
64-
65-
.. note::
66-
67-
Not all governors are available on all systems. Governors enabling higher clock speed are typically more performance-centric and will yield better performance for Isaac Sim.
68-
69-
Additional Performance Guides
70-
-----------------------------
71-
72-
There are many ways to "tune" the performance of the simulation, but the way you choose largely depends on what you are trying to simulate. In general, the first place
73-
you will want to look for performance gains is with the `PhysX engine <https://docs.omniverse.nvidia.com/kit/docs/omni_physics/107.3/dev_guide/guides.html>`_. Next to rendering
74-
and running deep learning models, the PhysX engine is the most computationally costly. Tuning the PhysX sim to limit the scope to only the task of interest is a great place to
75-
start hunting for performance gains.
76-
77-
We have recently released a new `gripper tuning guide <https://docs.omniverse.nvidia.com/kit/docs/omni_physics/107.3/dev_guide/guides/gripper_tuning_example.html>`_ , specific to contact and grasp tuning. Please check it first if you intend to use robot grippers. For additional details, you should also checkout these guides!
78-
79-
* `Isaac Sim Performance Optimization Handbook <https://docs.isaacsim.omniverse.nvidia.com/latest/reference_material/sim_performance_optimization_handbook.html>`_
80-
* `Omni Physics Simulation Performance Guide <https://docs.omniverse.nvidia.com/kit/docs/omni_physics/latest/dev_guide/guides/physics-performance.html>`_
6+
This page has moved. See :ref:`simulation-performance-troubleshooting` for guidance on diagnosing
7+
slow simulation and training workloads.

docs/source/refs/troubleshooting.rst

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,38 @@ Newton backends
219219

220220
These entries apply to the ``physics=newton_mjwarp`` and ``physics=newton_kamino`` backends.
221221

222+
.. _simulation-performance-troubleshooting:
223+
224+
Simulation or training runs slower than expected
225+
------------------------------------------------
226+
227+
Start with a representative profile before changing physics or rendering settings. The
228+
:doc:`Nsight Systems profiling guide <../how-to/profile_with_nsys>` can help distinguish time spent
229+
in physics, rendering, environment code, and policy inference.
230+
231+
For PhysX workloads, check the following common causes:
232+
233+
* **Unneeded visualization:** Commands that do not select a visualizer launch without a viewer by
234+
default. If a configuration would otherwise launch one, pass ``--viz none`` to disable it.
235+
* **Excessive collision work:** Avoid duplicated or overlapping collision geometry and use the
236+
simplest collider that provides the required fidelity.
237+
* **GPU collider fallbacks:** A warning that a convex mesh failed to cook as GPU-compatible means
238+
its collision handling falls back to the CPU. Replace the collider with a primitive or bounding
239+
box approximation when possible. A static triangle mesh is another option only when the geometry
240+
is not part of a dynamic rigid body.
241+
242+
For broader tuning guidance, including CPU/GPU selection, solver settings, rendering, sensors, and
243+
CPU configuration, consult the maintained upstream guides:
244+
245+
* `Isaac Sim Performance Optimization Handbook
246+
<https://docs.isaacsim.omniverse.nvidia.com/latest/reference_material/sim_performance_optimization_handbook.html>`_
247+
* `Omni Physics Simulation Performance Guide
248+
<https://docs.omniverse.nvidia.com/kit/docs/omni_physics/latest/dev_guide/guides/physics-performance.html>`_
249+
250+
For Newton-specific performance and solver parameters, see the
251+
:doc:`Newton physics documentation <../overview/core-concepts/physical-backends/newton/index>`.
252+
253+
222254
Joints actuate in PhysX but not in a Newton-based backend
223255
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
224256

skills/user/setup-troubleshooting/SKILL.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: isaaclab-setup-troubleshooting
3-
description: Routes Isaac Lab installation, verification, and common troubleshooting issues to official docs and canonical commands. Use when installing Isaac Lab, verifying setup, debugging launch failures, or diagnosing environment problems.
3+
description: Use when installing Isaac Lab, verifying setup, debugging launch failures, or diagnosing environment and simulation-performance problems.
44
audience: user
55
status: experimental
66
owners:
@@ -11,7 +11,7 @@ owners:
1111

1212
## When To Use
1313

14-
Use this skill when a user asks for help installing Isaac Lab, verifying a local setup, or diagnosing common setup and launch failures.
14+
Use this skill when a user asks for help installing Isaac Lab, verifying a local setup, or diagnosing common setup, launch, and simulation-performance problems.
1515

1616
Do not duplicate installation or troubleshooting docs in this skill. The official docs are the source of truth.
1717

@@ -25,8 +25,9 @@ Do not duplicate installation or troubleshooting docs in this skill. The officia
2525
6. Ask for the smallest relevant error output when the failure mode is unclear.
2626
7. Prefer a minimal verification command before running examples, training, or rendering workflows.
2727
8. Route backend-specific setup to the relevant PhysX or Newton docs.
28-
9. For XR teleoperation setup, which is a separate workflow from the base installation, route to the CloudXR how-to rather than the installation guide.
29-
10. If the docs are incomplete or stale, update the docs rather than expanding this skill.
28+
9. For unexpectedly slow simulation or training, route to the performance section in the troubleshooting reference and profile a representative workload before prescribing tuning changes.
29+
10. For XR teleoperation setup, which is a separate workflow from the base installation, route to the CloudXR how-to rather than the installation guide.
30+
11. If the docs are incomplete or stale, update the docs rather than expanding this skill.
3031

3132
## Validation
3233

skills/user/setup-troubleshooting/evaluations.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,20 @@ Known failure modes:
6161
- Recommends reinstalling before checking the active Python environment.
6262
- Starts debugging the training runner before validating imports.
6363
- Ignores the official troubleshooting page.
64+
65+
## Scenario 5: Slow Simulation Throughput
66+
67+
Query: "My GPU RL training runs, but throughput is poor and PhysX reports that a convex mesh will fall back to CPU. What should I check?"
68+
69+
Expected behavior:
70+
71+
- Routes first to the performance section in the troubleshooting reference.
72+
- Recommends profiling a representative workload with the Nsight Systems guide before changing settings.
73+
- Explains that the collider warning indicates a CPU fallback and uses the documented collider workarounds.
74+
- Defers general PhysX and Isaac Sim tuning to the maintained upstream performance guides.
75+
76+
Known failure modes:
77+
78+
- Gives generic performance suggestions without consulting the troubleshooting reference.
79+
- Changes solver or RL settings before identifying the bottleneck.
80+
- Omits the CPU-fallback warning or recommends a dynamic triangle-mesh collider.

skills/user/setup-troubleshooting/reference.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ uv run isaaclab train --rl_library rsl_rl --task Isaac-Cartpole --max_iterations
5454
| Backend preset fails | `uv run python scripts/environments/list_envs.py --show_presets` |
5555
| Camera or renderer fails | Renderer selection and sensor docs |
5656
| Training starts but shapes fail | Environment reset/step smoke test before runner |
57+
| Simulation or training throughput is poor | Performance troubleshooting, then Nsight Systems profiling |
5758

5859
## Escalation Checklist
5960

0 commit comments

Comments
 (0)