Another concurrent user question. Still confusing

Gatling version: 3.11.5 (must be up to date)
Gatling flavor: [ X] java kotlin scala javascript typescript
Gatling build tool: [ X] maven gradle sbt bundle npm

Hello Community,
I just want to know if I have the following simulation:
NOTE: feeder is set to circular

    {
        setUp(simulationTest
            .injectOpen(rampUsers(10)
            .during(Duration.ofMinutes(2))))
            .protocols(httpProtocol)
            .maxDuration(Duration.ofMinutes(20));
    }

If it takes a single user 2 minutes to complete the scenario flow, since the request is for 10 users to execute concurrently, after the rampUpTime of 2 minutes, will Gatling just keep adding users continually to keep the concurrent user count at 10 until the 20 minutes is up?

If not, how would I change this so that after the ramp up time, the number of users stays consistently at 10

Thanks,
Timmer

To keep the number of users constant in your app, I think you should use a closed work model.

how about

.inject(
   rampConcurrentUsers(1).to(desiredUsers).during(UserRampTime),
   constantConcurrentUsers(desiredUsers).during(SteadyLength)
)

For this, you may need to use .forever in your loop too.

Given the previous discussions, I think @trinp 's advice is better suited.
IIRC, you want the same users to loop (reuse). Then use a loop.

Again, maxDuration neither makes your users loop or last longer, nor have any impact on your injection profile (which controls when new users are started).
It forcefully stops the test after a given duration, typically when you’re using a forever loop of because your tests triggers so many long timeouts that it would take forever. As the name states, it just controls the maximum duration of the test.