Low RTF in gazebo harmonic simulation

I am trying to create a simulation world that includes two Mini Talon models, each equipped with a camera. The world is based on the standard runway world provided in the Gazebo examples.

When the simulation is running with charging enabled, I observe approximately 40% RTF. However, when charging is disabled, the RTF drops to around 7%, which is extremely low. At this point, I can no longer increase the max_step_size without introducing significant jitter in the simulation.

I am wondering whether it is possible to run this world with higher RTF values, or if there are specific optimizations I am missing. The full world file is attached below.

<?xml version="1.0" ?>

<sdf version="1.7"

    xmlns:experimental="http://sdformat.org/schemas/experimental">

  <world name="runway">

    <physics name="1ms" type="ode">

      <max_step_size>0.002</max_step_size>

      <real_time_factor>1</real_time_factor>

    </physics>




    <plugin filename="gz-sim-physics-system"

      name="gz::sim::systems::Physics">

    </plugin>

    <plugin filename="gz-sim-sensors-system" name="gz::sim::systems::Sensors">

      <render_engine>ogre2</render_engine>

    </plugin>

    <plugin filename="gz-sim-user-commands-system"

      name="gz::sim::systems::UserCommands">

    </plugin>

    <plugin filename="gz-sim-scene-broadcaster-system"

      name="gz::sim::systems::SceneBroadcaster">

    </plugin>

    <plugin filename="gz-sim-imu-system"

      name="gz::sim::systems::Imu">

    </plugin>

    <plugin filename="gz-sim-navsat-system"

      name="gz::sim::systems::NavSat">

    </plugin>




    <scene>

      <ambient>1.0 1.0 1.0</ambient>

      <background>0.8 0.8 0.8</background>

      <sky></sky>

    </scene>




    <spherical_coordinates>

      <latitude_deg>-35.363262</latitude_deg>

      <longitude_deg>149.165237</longitude_deg>

      <elevation>584</elevation>

      <heading_deg>0</heading_deg>

      <surface_model>EARTH_WGS84</surface_model>

    </spherical_coordinates>




    <light type="directional" name="sun">

      <cast_shadows>0</cast_shadows>

      <pose>0 0 10 0 0 0</pose>

      <diffuse>0.8 0.8 0.8 1</diffuse>

      <specular>0.8 0.8 0.8 1</specular>

      <attenuation>

        <range>1000</range>

        <constant>0.9</constant>

        <linear>0.01</linear>

        <quadratic>0.001</quadratic>

      </attenuation>

      <direction>-0.5 0.1 -0.9</direction>

    </light>




    <!-- ENU axes -->

    <model name="axes">

      <static>1</static>

      <link name="link">

        <visual name="r">

          <cast_shadows>0</cast_shadows>

          <pose>5 0 0.1 0 0 0</pose>

          <geometry>

            <box>

              <size>10 0.01 0.01</size>

            </box>

          </geometry>

          <material>

            <ambient>1 0 0 1</ambient>

            <diffuse>1 0 0 1</diffuse>

            <emissive>1 0 0 1</emissive>

            <specular>0.5 0.5 0.5 1</specular>

          </material>

        </visual>

        <visual name="g">

          <cast_shadows>0</cast_shadows>

          <pose>0 5 0.1 0 0 0</pose>

          <geometry>

            <box>

              <size>0.01 10 0.01</size>

            </box>

          </geometry>

          <material>

            <ambient>0 1 0 1</ambient>

            <diffuse>0 1 0 1</diffuse>

            <emissive>0 1 0 1</emissive>

            <specular>0.5 0.5 0.5 1</specular>

          </material>

        </visual>

        <visual name="b">

          <cast_shadows>0</cast_shadows>

          <pose>0 0 5.1 0 0 0</pose>

          <geometry>

            <box>

              <size>0.01 0.01 10</size>

            </box>

          </geometry>

          <material>

            <ambient>0 0 1 1</ambient>

            <diffuse>0 0 1 1</diffuse>

            <emissive>0 0 1 1</emissive>

            <specular>0.5 0.5 0.5 1</specular>

          </material>

        </visual>

      </link>

    </model>




    <include>

      <uri>model://runway</uri>

    </include>




    <include>

      <pose degrees="true">0 0 0.2 0 0 90</pose>

      <uri>model://mini_talon_vtail</uri>

      <name>vtail_1</name>

      <experimental:params>

        <plugin element_id="camera_link::camera::GstCameraPlugin" action="modify">

            <udp_port>5600</udp_port>

        </plugin>

        <plugin element_id="ArduPilotPlugin" action="modify">

            <fdm_port_in>9002</fdm_port_in>

        </plugin>

      </experimental:params>

    </include>




    <include>

      <pose degrees="true">-2 0 0.2 0 0 90</pose>

      <uri>model://mini_talon_vtail</uri>

      <name>vtail_2</name>

      <experimental:params>

      <plugin element_id="camera_link::camera::GstCameraPlugin" action="modify">

            <udp_port>5610</udp_port>

        </plugin>

        <plugin element_id="ArduPilotPlugin" action="modify">

            <fdm_port_in>9012</fdm_port_in>

        </plugin>

      </experimental:params>

    </include>

    




    <!-- <include>

      <pose degrees="true">2 0 0.2 0 0 90</pose>

      <uri>model://mini_talon_vtail</uri>

      <name>vtail_3</name>

      <experimental:params>

        <plugin element_id="camera_link::camera::GstCameraPlugin" action="modify">

            <udp_port>5610</udp_port>

        </plugin>

        <plugin element_id="ArduPilotPlugin" action="modify">

            <fdm_port_in>9022</fdm_port_in>

        </plugin>

      </experimental:params>

    </include> -->




  </world>

</sdf>

Additionally, the low RTF issue persists regardless of whether the cameras are enabled or disabled; closing the camera streams does not improve performance.

I am using gazebo harmonic on Windows 11 with wsl2.

Thank you in advance for any guidance or suggestions.