How to process the world model in parallel with multiple CPUs

I created a .world file, but the real time factor is only 0.3. So I checked the CUP and found that it cannot be processed in parallel with multiple CPUs, as shown in Figure 1.

In addition, when I uninstalled the Nvidia graphics driver, it can be processed by multiple CPUs (as shown in Figure 2), but the real time factor is lower, only 0.12.

Gazebo classic (9.x, 11.x) or Ignition Gazebo? In Ignition Gazebo, you can at least use the levels plugin to subdivide the simulation world to multiple parallellizable pieces. But if everything interesting to you happens at one place, it’s not of much help.

I guess the multi-threaded usage of CPU you see is software rendering, so it doesn’t mean that the non-rendering parts of the simulations run in parallel. It’s just the rendering using some CPU cores instead of the GPU (which is almost always the worse choice).

To get the simulation faster, you can check the framerates of your rendering sensors (cameras, lidars) and lower it to a framerate that suits your use case. Usually, 30 fps cameras are an overkill for mobile robotics.